Docker 容器化技术介绍(六) 之 Docker 容器操作

Docker 容器化技术介绍(一) 之 虚拟化技术

Docker 容器化技术介绍(二) 之 Docker 简介

Docker 容器化技术介绍(三) 之 Docker 组件

Docker 容器化技术介绍(四) 之 Docker的安装与启动

Docker 容器化技术介绍(五) 之 Docker 镜像操作

Docker 容器化技术介绍(六) 之 Docker 容器操作

Docker 容器化技术介绍(七) 之 Docker 应用部署

Docker 容器化技术介绍(八) 之 Docker 备份与迁移


1 查看容器

查看正在运行的容器

docker ps

[root@bogon home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

列的介绍

名称 含义
CONTAINER ID 容器的 ID
IMAGE 创建容器时所使用的镜像
COMMAND 运行容器中的软件执行的命令
CREATED 容器的创建时间
STATUS 容器的状态: UP 表示运行状态 Exited 表示关闭状态
PORTS 宿主机端口和容器中软件的端口的对应关系
NAMES 容器的名称

查看所有的容器(包含了正在运行的容器以及之前启动过的容器)

docker ps -a

[root@bogon home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                NAMES
bff4ff3bd48a        redis               "docker-entrypoint..."   14 minutes ago      Up 14 minutes       0.0.0.0:6379->6379/tcp               th_docker_redis
5de5bd344823        nginx               "nginx -g 'daemon ..."   17 minutes ago      Up 17 minutes       0.0.0.0:80->80/tcp                   th_docker_nginx
7201b7a695c1        tomcat              "catalina.sh run"        22 minutes ago      Up 22 minutes       0.0.0.0:8099->8080/tcp               th_docker_tomcat
289582afa5ad        mysql               "docker-entrypoint..."   42 minutes ago      Up 42 minutes       33060/tcp, 0.0.0.0:33306->3306/tcp   th_docker_mysql

查看最后一次运行的容器

docker ps -l

[root@bogon home]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
bff4ff3bd48a        redis               "docker-entrypoint..."   15 minutes ago      Up 15 minutes       0.0.0.0:6379->6379/tcp   th_docker_redis

查看停止的容器

docker ps -f status=exited

[root@bogon home]# docker ps -f status=exited
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
5de5bd344823        nginx               "nginx -g 'daemon ..."   19 minutes ago      Exited (0) 3 seconds ago                       th_docker_nginx

2 创建与启动容器

2.1创建容器参数介绍

创建容器的时候我们需要使用如下命令进行容器的创建

docker run

在创建容器的时候我需要使用一下参数.其中常用到的参数如下:

参数名称 参数含义
-i 运行容器
-t 表示容器启动后会进入其命令行,加入这两个参数后,容器创建就能登录进去;即分配一个伪终端
-d 在 run 后面加上-d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,创建后 就会自动进去容器)
--name 为创建的容器命名
-v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v 做多个目录或文件映射;注意:最好 做目录映射,在宿主机上做修改,然后共享到容器上
-p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口;可以使用多个-p 做多个端口映射

-d 表示让容器在后台运行起来, -t 表示创建好容器以后我们就指定进行到容器中,进入到容器中以后我们就可以输入命令和容器进行交互. 既然如此,那么也就是说容器我们可以分为两类: 1. 交互式容器 2. 守护式容器

2.2 创建交互式容器

创建一个交互式容器并取名为 th_centos

docker run -it --name=th_centos centos /bin/bash

这样就可以直接运行到 th_centos 这个 docker 的容器里面了

[root@bogon home]# docker run -it --name=th_centos centos /bin/bash
[root@d8099a455a84 /]# 

使用 ps 命令查看容器的状态,状态为 Up

[root@bogon ~]# docker  ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                NAMES
690301d8ba86        centos              "/bin/bash"              8 seconds ago       Up 7 seconds                                             th_centos

使用 exit 退出容器

然后在查看容器状态,状态为 Exited

[root@bogon home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                       PORTS                                NAMES
d8099a455a84        centos              "/bin/bash"              5 minutes ago        Exited (127) 3 minutes ago                                        th_centos

我们容器也关闭了,这就是交互式容器的特点: 当我们推出容器以后,容器就关闭了

2.3 创建守护式容器

创建一个守护式容器:如果对于一个需要长期运行的容器来说,可以创建一个守护式容器。命令如下(容器名称不能重复):

docker run -id --name=th_centos_3 centos

[root@bogon home]# docker run -id --name=th_centos_3 centos
9938e58f17b5a601e9eb2c7eaf5edc27b3484d5778a24c63efa1029736735616

创建好容器以后,这个容器是以后台的方式运行的,那么需要操作容器就需要登录到容器中,可以使用如下命令进行登录

docker exec -it container_name (container_id) /bin/bash

[root@bogon home]# docker exec -it th_centos_3 /bin/bash
[root@9938e58f17b5 /]# ls 
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@9938e58f17b5 /]# ps
  PID TTY          TIME CMD
    7 ?        00:00:00 bash
   22 ?        00:00:00 ps

退出以登录的容器,然后在查看容器的状态

[root@bogon home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS                                NAMES
9938e58f17b5        centos              "/bin/bash"              2 minutes ago       Up 2 minutes                                                      th_centos_3

发现容器还是处于运行状态,因此可以总结出守护式容器的特点: 即使退出容器以后,容器还是处于运行状态

3 停止与启动容器

关闭容器

docker stop $CONTAINER_NAME/ID

可以发现容器状态由 Up 转为 Exited

[root@bogon home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS                                NAMES
9938e58f17b5        centos              "/bin/bash"              2 minutes ago       Up 2 minutes                                                      th_centos_3
[root@bogon home]# docker stop th_centos_3
th_centos_3
[root@bogon home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                                NAMES
9938e58f17b5        centos              "/bin/bash"              4 minutes ago       Exited (137) 7 seconds ago                                         th_centos_3

启动已经关闭的容器

docker start $CONTAINER_NAME/ID

可以发现容器状态由 Exited 转为 Up

[root@bogon home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                                NAMES
9938e58f17b5        centos              "/bin/bash"              4 minutes ago       Exited (137) 7 seconds ago                                         th_centos_3
[root@bogon home]# docker start th_centos_3
th_centos_3
[root@bogon home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                                NAMES
9938e58f17b5        centos              "/bin/bash"              5 minutes ago       Up 5 seconds                                                       th_centos_3

4 文件拷贝

有的时候我们需要将某一个文件复制到容器中,然后在容器中进行时候,那么我们就需要了解一下如何进行文件的拷贝;

如果我们需要将文件拷贝到容器内可以使用 cp 命令

docker cp 宿主机对应的文件/或者目录 容器名称:容器目录

[root@bogon home]# docker cp /mtfs/media/1080P_daxiongtu_30fps_2D_30s.flv th_centos_3:/opt/
[root@bogon home]# docker exec -it th_centos_3 /bin/bash
[root@9938e58f17b5 /]# ls /opt -lh
total 11M
-rw-r--r-- 1 root root 11M Jun 14 03:27 1080P_daxiongtu_30fps_2D_30s.flv

我们也可以将容器中的某一个文件或者文件夹拷贝到宿主机上

docker cp 容器名称:容器目录 需要拷贝的文件或目录

[root@bogon home]# docker cp th_centos_3:/opt/1080P_daxiongtu_30fps_2D_30s.flv /home
[root@bogon home]# ls /home/
1080P_daxiongtu_30fps_2D_30s.flv  th

5 目录挂载

在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样就可以通过修改宿主机某个目录的文件从而去影响容器;

命令的格式为: 创建容器 添加 -v 参数 后边为 宿主机目录:容器目录

docker run -id -v /mtfs/media/:/opt --name=th_centos_4 centos

然后进入容器中查看 /opt 目录下是否存在一个 /mtfs/media中的数据

[root@bogon home]# docker run -id -v /mtfs/media/:/opt --name=th_centos_4 centos
d2e756a08a0b6f1a5ded8a385cafe1614fdb3909723075025f79dd1882022304
[root@bogon home]# docker exec -it th_centos_4 /bin/bash
[root@d2e756a08a0b /]# ls /opt
1.flv                             1080P_daxiongtu_30fps_2D_3600frames_an.flv  20180621_online_60min.flv            ffmpeg-20180524.tar.gz  out3.h264        testtf.flv
1.mp4                             2.flv                                       20180627_cctv_5min.flv               out.flv                 out_1080p.flv
[root@d2e756a08a0b /]#

拷贝文件到宿主机的 /mtfs/media 目录下看看在容器中同样可以看到该文件;

6 查看容器的 IP 地址

我们可以通过以下命令查看容器运行的各种数据

docker  inspect  th_centos_4

通过上述命令可以查看 docker 容器中很多的的信息,其中就包含了 ip 地址;( mount 挂载信息也可以看到 )

[root@bogon ~]# docker inspect th_centos_4
    ...........  略 .............
        "Mounts": [
                "Type": "bind",
                "Source": "/mtfs/media",
                "Destination": "/opt",
        "NetworkSettings": {
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.6",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:06",

我们也可以使用如下命令过滤 ip 地址

docker inspect --format='{{.NetworkSettings.IPAddress}}'  th_centos_4

[root@bogon ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' th_centos_4
172.17.0.6

7 删除容器

删除指定的容器(只能删除关闭的容器)

docker rm $CONTAINER_ID/NAME

[root@bogon ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                                NAMES
d2e756a08a0b        centos              "/bin/bash"              11 minutes ago      Up 11 minutes                                                      th_centos_4
690301d8ba86        centos              "/bin/bash"              37 minutes ago      Exited (0) 36 minutes ago                                          th_centos_2
[root@bogon ~]# docker rm th_centos_2
th_centos_2
[root@bogon ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                                NAMES
d2e756a08a0b        centos              "/bin/bash"              11 minutes ago      Up 11 minutes                                                      th_centos_4

删除所有的容器 (其中  docker ps -a -q 为提取 docker 中所以的 容器的 id 号 )

docker rm `docker ps -a -q`

8 实时查看 docker 容器的日志

docker logs -f -t --tail 行数 容器名

例:实时查看docker容器名为 th_ubuntu 的最后10行日志

docker logs -f -t --tail 10 th_ubuntu

猜你喜欢

转载自blog.csdn.net/ternence_hsu/article/details/82025999