当前位置:首页 > Docker > Docker容器管理

Docker容器管理

Docker 容器(Container)是一个开源的应用容器引擎,在原生的操作系统之上直接虚拟出一个容器,这个容器有独立的进程、权限、资源、网络等等。运维或者开发者可以根据需求构建容器,然后快速分发容器到测试和生产环境,对外提供服务。一台服务器可以跑上千个容器,每个容器都是相互独立的。

1.docker下面运行hello-word,这里的centos是docker base镜像。

[root@kvm-server01 ~]# docker run centos /bin/echo "hello-world"
hello-world

2.创建并运行容器

[root@kvm-server01 ~]# docker run --name mydocker -t -i  centos /bin/bash 
[root@0946ebb7484e /]# ls
anaconda-post.log  dev  home  lib64       media  opt   root  sbin  sys  usr
bin                etc  lib   lost+found  mnt    proc  run   srv   tmp  var
[root@0946ebb7484e /]# uptime
 06:46:20 up  4:15,  0 users,  load average: 0.02, 0.02, 0.09

Docker run常用的命令参数解释:
–name:Assign a name to the container 给容器定义一个名称。
-i:以交互的模式运行容器,通常与-t同时使用。
-t:给Docker分配一个伪输入终端,通常与-i同时使用。
/bin/bash:在容器里执行/bin/bash命令。

利用docker run来创建容器时,docker在后台运行的过程如下:
1)检查本地是否存在指定的镜像,不存在就从公有仓库下载。
2)利用镜像创建并启动一个容器。
3)分配一个文件系统,并在只读的镜像层外面挂在一层可读写层。
4)从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去。
5)从地址池配置一个ip地址给容器。
6)执行用户指定的应用程序。
7)执行完毕后容器被终止。

3.查看所有的容器,包括运行的和终止的[exit退出],如果不加-a参数,则输出当前正在运行的容器。

[root@kvm-server01 ~]# docker ps -a
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS                      PORTS                         NAMES
ff0b4fec96f2        zmz/zmznginx:v3                  "nginx"                  4 weeks ago         Exited (255) 4 weeks ago    0.0.0.0:8888->80/tcp          nginx03
c56515b7548c        zmz/zmznginx:v2                  "nginx"                  4 weeks ago         Exited (255) 4 weeks ago    0.0.0.0:8080->80/tcp          zmzblognginx
9c92767d77dd        zmz/zmznginx:v1                  "/bin/bash"              4 weeks ago         Exited (0) 4 weeks ago                                    nginx01
e306c978cccc        98d35105a391                     "/bin/bash"              4 weeks ago         Exited (0) 4 weeks ago                                    zmznginx
9360ca421c23        db079554b4d2                     "nginx -g 'daemon off"   5 weeks ago         Up 14 seconds               0.0.0.0:80->80/tcp, 443/tcp   www01

4.启动终止的容器,后面跟容器的ID。

[root@kvm-server01 ~]# docker start  0946ebb7484e 

5.停止容器。

[root@kvm-server01 ~]# docker stop  0946ebb7484e 

6.进入容器。

[root@kvm-server01 ~]# docker attach 0946ebb7484e

7.删除容器,删除一个已经终止的容器,如果容器正在运行,需要加-f参数。

[root@kvm-server01 ~]# docker rm 0946ebb7484e 

8.容器停止后自动删除。

[root@kvm-server01 ~]# docker run --rm centos /bin/echo "hello-world"

9.通过nsenter的方式快速进入容器。

通常连接Docker容器并与其进行交互有四种方法,attach、sshd、nsinit和nsenter,下面通过nsenter的方式连接容器。nsenter是用来访问另一个进程的名字空间。

#安装nsenter工具包
[root@kvm-server01 ~]# yum install util-linux
#启动一个容器
[root@kvm-server01 ~]# docker start 0946ebb7484e
0946ebb7484e
#获取该容器的PID
[root@kvm-server01 ~]# docker inspect --format "{{.State.Pid}}" 0946ebb7484e  
8390
#通过nsenter的方式进入容器
[root@kvm-server01 ~]# nsenter -t 8390 -u -i -n -p
[root@0946ebb7484e ~]#
#退出容器的时候,该容器不会终止。
[root@kvm-server01 ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
0946ebb7484e        98d35105a391        "/bin/bash"         5 weeks ago         Up About a minute                       mydocker
#快速进入docker容器的方法,后面跟容器的ID。
[root@kvm-server01 sh]# cat docker.sh
#!/bin/sh

PID=$(docker inspect --format "{{.State.Pid}}" $1)

nsenter -t$PID -u -i -n -p

10.列出正在运行的容器的ID

[root@kvm-server01 ~]# docker ps -q
0946ebb7484e

11.批量杀掉当前正在运行的容器

[root@kvm-server01 ~]# docker kill $(docker ps -q)
  • «
  • »
  • 朴实的追梦者 作者:
    除非注明,本文原创:朴实的追梦者,欢迎转载!转载请以链接形式注明本文地址,谢谢。
    原文链接:http://www.zmzblog.com/docker/docker-container-management.html

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注