1  概述

容器状态转换相关的命令列表关系,docker的状态转换和管理的命令,即docker的生命周期管理的命令,如下截图

圆形图标表示docker的状态

方框表示命令执行命令后触发的事件

箭头的命令,为docker的相关命令,命令执行后,会触发相关事件,事件在方框内表示

菱形里的表示判断,取决于策略设定,如一旦某个容器被意外终止,如OOM,是否被restart

容器处于created或者stopped状态,可以被删除

1240

2  命令介绍

docker pull 拉取相关镜像

每个镜像文件都有其id,即其校验码,如只拖下来1.27.2这个版本,-a则把所有版本都拖下来,如

docker pull busybox:1.27.2

获取最新的centos镜像,默认获取latest版本

docker image pull centos

显示本地镜像信息

docker image ls

或者

docker images

查找镜像

如查找centos镜像,official 显示ok表示官方的,一般采用官方的

 docker search centos

创建和启动

create:仅创建容器不启动

run:既创建容器又启动容器

可以通过命令查看相关的参数选项

 docker run --help

如下

指定容器的名字  --name

-i是指登录到终端后进入交互式,

-t-i一起使用,即-it

--detach 表示不附加终端

但是--rm表示容器停止后就删除,一般和--detach一起运行

运行如下的命令,运行容器

 docker run -it --name sunnybox busybox:1.27.2

启动docker的时候会自动创建docker0的桥,ip 172.17.0.1,默认不指定网络的话,容器会被默认指定到这个桥上,ip172.17.0.2这个ip开始分配

启动容器,执行命令后,将容器删除

如执行ifconfig -a后删除容器,这个命令的意义在于可以用来探查相关容器的信息

 docker run --name sunnybox03 --rm busybox:1.27.2 ifconfig -a

查看运行中的容器的进程信息

docker top

top后跟上容器名称,如下查看新建的sunnybox

docker top sunnybox

查看运行中的容器

docker ps

查看所有的容器,包括没有运行的容器,加-a选项

docker ps -a

停止容器

命令有stop和kill,其中,stop命令比较安全,kill强制停止,可能导致数据丢失

docker stop sunnybox

或者

docker kill sunnybox

重启运行中的容器

docker restart sunnybox

暂停容器运行

容器暂停后,相当于状态冻结在内存中,不会响应请求

docker pause sunnybox

解除暂停容器,重新运行

docker unpause sunnybox

附加终端

镜像在后台运行,通过attach进入运行中容器

docker attach sunnybox

要剥离终端,可以同时按照ctrl+p,然后再快速按ctrl+q进行剥离

删除容器

容器停止默认不会被删除的,用以下命令删除

docker rm sunnybox

注意,docker有可能会因为宿主机内存耗尽而终止,内核会随机选择docker内存占用大的容器,将其强制停止。

查看镜像或者容器的详细信息

docker inspect sunnybox

容器的信息用json格式的字典进行详细

docker inspect busybox:1.27.2

在docker容器中,命令不能运行为守护进程,原因是运行为守护进程,就会脱离当前终端,脱离当前终端,就相当于当前容器没有进程,那么当前容器生命周期就结束了,如下,启动一个命令,设定busybox启动httpd服务,但是添加选项-f,表示httpd不启动为守护进程,

如果执行以下命令,那么就会卡住,这是正确的,因为httpd此时运行起来,没有进入交互式模式,所以卡住,如果把选项-f换成-d选项就可以运行为守护模式,不建议使用-d选项

 docker run --name sunnyweb busybox:1.27.2 httpd -f /

在已经运行的容器中运行其他命令,使用选项 exec

如下命令,在已经运行的容器sunnyweb执行命令netstat -tnl,查看容器内部监听端口信息

docker exec sunnyweb netstat -tnl

容器的资源限制

要为容器配置资源,需要用cgroup来配置,

docker 提供了三个参数在docker run和docker creat命令允许在设置容器时管理三种不同资源

如下三个选项

内存: -m  或者 --memory:设置内存大小,如果不指定,默认为docker宿主机的可用内存

CPU: --cpu-shares :表示有多个容器时,按什么比例把CPU分配给某些容器的比例,权重设置是2的整数倍,如512:1024表示两个容器的的CPU占比为1:2

       --cpuset-cpus:表示把哪几个cpu配置给这个容器,而不是使用宿主机的所有CPU,用于绑定CPU核心

设备

      --devices : 把某个物理设备授权给容器

     --device  /dev/cdrom:把光盘分区授权给某个容器,其他容器看不到

一般不做设置,如果要设置,一般在容器编排工具里进行设置