docker命令入门详解二 容器生命周期管理类

接上章:https://blog.csdn.net/weixin_46546303/article/details/139305721?spm=1001.2014.3001.5502

容器生命周期管理类

create、exec、kill、pause、restart、rm、run、start、stop、unpause

docker create

描述信息

docker container create(或简写:)从指定的图像创建一个新的容器,但不启动它。

创建容器时,Docker 守护程序会在指定镜像上创建可写容器层,并准备运行指定命令。容器 ID 随后会打印到STDOUT。这类似于 ,docker run -d 只是容器从未启动过。然后,您可以使用docker container start (或简写:docker start)命令随时启动容器。

命令格式:
`docker create [OPTIONS] IMAGE [COMMAND] [ARG...]`
可用选项
      --add-host                       ##添加自定义主机到IP的映射(主机:IP)
  -a, --attach                         ##连接到 STDIN、STDOUT 或 STDERR
      --blkio-weight uint16            ##块IO(相对权重),介于101000之间,或0表示禁用(默认为0)
      --blkio-weight-device list       ##块IO权重(相对设备权重)(默认值[])
      --cap-add list                   ##添加Linux功能
      --cap-drop list                  ##丢弃Linux功能
      --cgroup-parent string           ##容器的可选父级cgroup
      --cidfile string                 ##将容器ID写入文件
      --cpu-period int                 ##限制CPU CFS(完全公平调度程序)周期
      --cpu-quota int                  ##Limit CPU CFS (Completely Fair Scheduler) quota
      --cpu-rt-period int              ##限制CPU CFS(完全公平调度程序)配额
      --cpu-rt-runtime int             ##限制CPU实时运行时间(微秒)
  -c, --cpu-shares int                 ##CPU份额(相对权重)
      --cpus decimal                   ##CPU数量
      --cpuset-cpus string             ##允许执行的CPU(0-301)
      --cpuset-mems string             ##允许执行的内存(0-301)
      --device list                    ##向容器中添加主机设备
      --device-cgroup-rule list        ##向cgroup允许的设备列表添加规则
      --device-read-bps list           ##限制设备的读取速率(字节/)(默认值[])
      --device-read-iops list          ##限制设备的读取速率(IO/)(默认值[])
      --device-write-bps list          ##限制设备的写入速率(字节/)(默认值[])
      --device-write-iops list         ##限制设备的写入速率(IO/)(默认值[])
      --disable-content-trust          ##跳过镜像验证(默认为true)
      --dns list                       ##设置自定义DNS服务器
      --dns-option list                ##设置DNS选项
      --dns-search list                ##设置自定义DNS搜索域
      --entrypoint string              ##覆盖镜像的默认入口点
  -e, --env list                       ##设置环境变量
      --env-file list                  ##读取环境变量文件
      --expose list                    ##暴露一个或某个端口范围
      --group-add list                 ##添加要加入的其他组
      --health-cmd string              ##运行命令以检查运行状况
      --health-interval duration       ##运行检查的间隔时间(MS||S||M||H)(默认0s)
      --health-retries int             ##连续失败需要报告不健康
      --health-start-period duration   ##开始运行前容器初始化的开始周期-重试倒计时(ms||s||m||h)(默认0s)
      --health-timeout duration        ##允许一次检查运行的最长时间(MS||S||M||H)(默认0s)
      --help                           ##打印用法
  -h, --hostname string                ##容器主机名
      --init                           ##在容器内运行一个init,用于转发信号和获取进程
  -i, --interactive                    ##即使未连接,也要保持STDIN打开
      --ip string                      ##IPv4地址(172.30.100.104)
      --ip6 string                     ##IPv6地址(2001:DB8::33)
      --ipc string                     ##使用IPC模式
      --isolation string               ##容器隔离技术
      --kernel-memory bytes            ##内核内存限制
  -l, --label list                     ##在容器上设置元数据
      --label-file list                ##读取标签分隔行文件
      --link list                      ##添加到另一个容器的链接
      --link-local-ip list             ##容器IPv4/IPv6本地链路地址
      --log-driver string              ##容器的日志记录驱动程序
      --log-opt list                   ##日志驱动程序选项
      --mac-address string             ##容器MAC地址(例如,92:d0:c6:0a:29:33)
  -m, --memory bytes                   ##内存限制
      --memory-reservation bytes       ##内存软限制
      --memory-swap bytes              ##交换分区限制等于内存加交换:'-1',以启用无限制交换
      --memory-swappiness int          ##调整容器内存交换度(0100)(默认值-1)
      --mount mount                    ##将文件系统挂载附加到容器
      --name string                    ##为容器指定一个名称
      --network string                 ##将容器连接到网络(默认值为“default)
      --network-alias list             ##为容器添加网络作用域别名
      --no-healthcheck                 ##禁用任何容器指定的健康检查
      --oom-kill-disable               ##禁用OOM
      --oom-score-adj int              ##调整主机的OOM首选项(-10001000)
      --pid string                     ##要使用的PID命名空间
      --pids-limit int                 ##调谐容器PID限制(设置-1表示无限制)
      --privileged                     ##赋予此容器扩展权限
  -p, --publish list                   ##将容器的端口发布到主机
  -P, --publish-all                    ##将所有公开的端口发布到随机端口
      --read-only                      ##将容器的根文件系统挂载为只读
      --restart string                 ##重新启动策略,以便在容器退出时应用(默认值为“否”)
      --rm                             ##退出时自动移除容器
      --runtime string                 ##用于此容器的运行时
      --security-opt list              ##安全选项
      --shm-size bytes                 ##/dev/shm的大小
      --stop-signal string             ##停止容器的信号(默认为“SIGTERM”)
      --stop-timeout int               ##停止容器的超时时间()
      --storage-opt list               ##容器的存储驱动程序选项
      --sysctl map                     ##Sysctl选项(默认映射[])
      --tmpfs list                     ##挂载一个tmpfs目录
  -t, --tty                            ##分配伪TTY
      --ulimit ulimit                  ##Ulimit选项(默认值[])
  -u, --user string                    ##用户名或UID(格式:<name||uid>[:<group||gid>])
      --userns string                  ##要使用的用户命名空间
      --uts string                     ##要使用的UTS命名空间
  -v, --volume list                    ##绑定挂载一个卷
      --volume-driver string           ##容器的可选Volume驱动程序
      --volumes-from list              ##从指定的容器挂载卷
  -w, --workdir string                 ##容器内的工作目录
示例,此处只演示高频选项
root@xxx:~# docker create  nginx:latest    ##根据nginx镜像创建一个容器,未指定容器名字,docker将会自动分配容器名,创建完成之后未运行,处于Created状态
b22fc7bdc7ab944e1fd49236c586791883920cad15912f9faa899a1834f2446f

root@xxx:~# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

root@xxx:~# docker ps -a 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS               NAMES
b22fc7bdc7ab        nginx:latest        "/docker-entrypoint.…"   9 seconds ago       Created                                       eager_dhawan
root@xxx:~# docker create  -it  \        ##-it :分配一个伪终端,并保持交互
> -p 10001:80 \                          ## -p:将容器的80端口映射到宿主机的10001端口
> -v  /data/nginx/html:/var/www/html \   ## 将宿主机/data/nginx/html挂载到容器/var/www/html
> -v  /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \  ##将宿主机data/nginx/conf/nginx.conf只读挂载到/etc/nginx/nginx.conf
> -v /data/nginx/log:/var/log/nginx:rw  \  ##将宿主机/data/nginx/log读写挂载到/var/log/nginx
> --name  web_server1 \     ##指定容器名字                    
> nginx  /bin/bash    ##使用nginx镜像   指定启动容器运行指令
dc0cb0d54b1541a4a218d6bd953dc8a4cbf9e89fd4337e11057bd3c048dc02de

root@xxx:~# docker ps        ##查看运行中的容器信息
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

root@xxx:~# docker ps  -a    ##查看所有容器信息,包含运行中的和非运行状态的容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS               NAMES
dc0cb0d54b15        nginx               "/docker-entrypoint.…"   13 seconds ago      Created                                       web_server1
b22fc7bdc7ab        nginx:latest        "/docker-entrypoint.…"   18 minutes ago      Created                                       eager_dhawan

root@xxx:~# docker start dc0cb0d54b15
dc0cb0d54b15

root@xxx:~# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
dc0cb0d54b15        nginx               "/docker-entrypoint.…"   28 seconds ago      Up 2 seconds        0.0.0.0:10001->80/tcp   web_server1

备注:docker create使用较少,一般用于想要提前设置容器配置以便在需要时可以立即启动时,此功能非常有用。新容器的初始状态为created

docker exec

描述信息

docker exec命令:在正在运行的容器中运行新命令。
指定的命令docker exec仅在容器的主进程(PID 1)运行时运行,并且如果容器重新启动,该命令也不会重新启动。
该命令在容器的默认工作目录中运行。

命令格式

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

可用选项
  -d, --detach                 ##分离模式:在后台运行命令
      --detach-keys string     ##覆盖用于分离容器的密钥序列
  -e, --env list               ##设置环境变量
  -i, --interactive            ##即使未连接,也要保持STDIN打开
      --privileged             ##赋予命令扩展权限
  -t, --tty                    ##分配伪TTY
  -u, --user string            ##用户名或UID(格式:<name||uid>[:<group||gid>])
  -w, --workdir string         ##容器内的工作目录
示例
root@xxx:~# docker run --name ubuntu_server-01 -d -i -t ubuntu:16.04 /bin/bash   ##创建一个后台运行名为ubuntu_server-01的容器,并分配一个伪终端保持交互模式,-i选项设置为保持STDIN连接(-i),以防止/bin/bash进程立即退出。
92a6ea1b024b2b240e80cb9396db1f660c89230dbfb1f843f8015817db14992a

root@xxx:~# docker ps       ##查看运行中的容器信息
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
92a6ea1b024b        ubuntu:16.04        "/bin/bash"              3 seconds ago       Up 2 seconds                                ubuntu_server-01

root@xxx:~# docker exec -d ubuntu_server-01 touch /tmp/testfile    ##后台在ubuntu_server-01容器内创建/tmp/testfile文件

root@xxx:~# docker exec -it ubuntu_server-01  /bin/bash            ##在容器ubuntu_server-01中启动一个新的shell会话,并分配一个伪终端保持交互模式,相当于进入了这个容器

root@92a6ea1b024b:/# ls /tmp                       ##在容器内,可以看到刚才创建的testfile文件
testfile

root@92a6ea1b024b:/# env    ##容器内的环境变量
HOSTNAME=92a6ea1b024b
TERM=xterm
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
SHLVL=1
HOME=/root

root@xxx:~# docker exec -e VAR_A=1 -e VAR_B=2 ubuntu_server-01 env    ##在ubuntu_server-01创建一个新的shell会话,并将环境变量$VAR_A设置为1,并将$VAR_B设置为2。
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=92a6ea1b024b
VAR_A=1
VAR_B=2
HOME=/root 
##因没有分配终端,所以执行后只打印出env执行结果,该进程结束。这些环境变量仅对该命令启动的进程有效,对容器内运行的其他进程不可用,该命令会继承在创建容器时设置的环境变量。使用--env(或-e简写)可覆盖全局环境变量,或为启动的进程设置其他环境变量

root@xxx:~# docker exec ubuntu_server-01 pwd   ##默认情况下,docker exec命令在创建容器时在相同的工作目录中运行。
/
root@xxx:~# docker exec -w /root ubuntu_server-01 pwd   ##-w指定要执行命令的工作目录
/root

###docker exec COMMAND应该是可执行文件,链式命令或带引号的命令将不起作用
root@xxx:~# docker exec -it ubuntu_server-01  sh -c "echo a && echo b"    ##正常执行
a
b
root@xxx:~# docker exec -it ubuntu_server-01   "echo a && echo b"        ##异常报错
OCI runtime exec failed: exec failed: container_linux.go:345: starting container process caused "exec: \"echo a && echo b\": executable file not found in $PATH": unknown

docker kill

描述信息

杀死一个或多个正在运行的容器

命令格式

docker kill [OPTIONS] CONTAINER [CONTAINER...]

可用选项
   -s, --signal		##发送给容器的信号(默认为“kill”)
示例
root@xxx:~# docker ps    ##查看运行中的容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
92a6ea1b024b        ubuntu:16.04        "/bin/bash"              5 days ago          Up 5 days                                   ubuntu_server-01
dc0cb0d54b15        nginx               "/docker-entrypoint.…"   5 days ago          Up 5 days           0.0.0.0:10001->80/tcp   web_server1

root@xxx:~# docker kill ubuntu_server-01  ##将KILL信号发送到容器,杀死容器
ubuntu_server-01

root@xxx:~# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
dc0cb0d54b15        nginx               "/docker-entrypoint.…"   5 days ago          Up 5 days           0.0.0.0:10001->80/tcp   web_server1

root@xxx:~# docker ps -a    ##查看到容器ubuntu_server-01已退出
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                   NAMES
92a6ea1b024b        ubuntu:16.04        "/bin/bash"              5 days ago          Exited (137) 19 seconds ago                           ubuntu_server-01
dc0cb0d54b15        nginx               "/docker-entrypoint.…"   5 days ago          Up 5 days                     0.0.0.0:10001->80/tcp   web_server1

root@xxx:~# docker kill --signal=SIGHUP  ubuntu_server-01    ##向容器发送自定义信号,按名称或数字指定自定义信号。该SIG前缀是可选的

###按名称或数字指定自定义信号。该SIG前缀是可选的,下面的例子是等价的
root@xxx:~# docker kill --signal=SIGHUP ubuntu_server-01 

root@xxx:~# docker kill --signal=HUP ubuntu_server-01 

root@xxx:~# docker kill --signal=1 ubuntu_server-01 
补充知识:

Linux 下的信号分为可靠信号和不可靠信号,或称为实时信号和非实时信号,信号是从1开始编号的,不存在0号信号。对应于 Linux 的信号值为 1-31 和 34-64。0信号用来测试对应进程是否存在或者是否由权限给其发送信号
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/88e0558678a04ddfa02d9b2752134185.png

docker pause

描述信息

暂停一个或多个容器中的所有进程

命令格式
docker pause CONTAINER [CONTAINER...]
示例
root@xxx:~# docker pause   ubuntu_server-01  ##暂停容器ubuntu_server-01
ubuntu_server-01

root@xxx:~# root@dg03dev80403584wq4c:~# docker ps   ##暂停后,容器依旧是up状态,但是显示Pause
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                   NAMES
92a6ea1b024b        ubuntu:16.04        "/bin/bash"              5 days ago          Up 33 seconds (Paused)                           ubuntu_server-01
dc0cb0d54b15        nginx               "/docker-entrypoint.…"   5 days ago          Up 5 days                0.0.0.0:10001->80/tcp   web_server1

root@xxx:~# docker exec -it ubuntu_server-01 /bin/bash   ##尝试进入容器执行命令报错
Error response from daemon: Container ubuntu_server-01 is paused, unpause the container before execdocker pause   ubuntu_server-01
ubuntu_server-01

docker restart

描述信息

重新启动一个或多个容器`

命令格式

docker restart [OPTIONS] CONTAINER [CONTAINER...]

可用选项
-t, --time  ##杀死它之前等待停止的秒数(默认 10
示例
root@xxx:~# docker restart  ubuntu_server-01   ##重启容器ubuntu_server-01
ubuntu_server-01

root@xxx:~# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
92a6ea1b024b        ubuntu:16.04        "/bin/bash"              5 days ago          Up 6 seconds                                ubuntu_server-01
dc0cb0d54b15        nginx               "/docker-entrypoint.…"   6 days ago          Up 6 days           0.0.0.0:10001->80/tcp   web_server1

docker rm

描述信息

删除一个或多个容器

命令格式

docker rm [OPTIONS] CONTAINER [CONTAINER...]

可用选项
  -f, --force               ##强制删除正在运行的容器(使用SIGKILL)
  -l, --link                ##删除指定的链接
  -v, --volumes             ##删除与容器关联的卷
示例
###同一个宿主机上的多个docker容器之间如果想进行通信,可以通过使用容器的ip地址来通信,也可以通过宿主机的ip加上容器暴露出的端口号来通信,前者会导致ip地址的硬编码,不方便迁移,并且容器重启后ip地址会改变,除非使用固定的ip,后者的通信方式比较单一,只能依靠监听在暴露出的端口的进程来进行有限的通信。通过docker的link机制可以通过一个name来和另一个容器通信,link机制方便了容器去发现其它的容器并且可以安全的传递一些连接信息给其它的容器,后续会在详细讲

root@xxx:~# docker run -itd --name redis-master redis:3.0  /bin/bash    ##使用redis:3.0镜像创建一个名为redis-master的容器,并后台执行/bin/bash
1c6b1acfe1eab4e2a01abd06d073eda261b0242c44c9ba0ad6310f6bbde9bb94

root@xxx:~# docker run -itd --name redis-slave1 --link redis-master:master redis:3.0 /bin/bash   ##使用redis:3.0镜像创建一个名为redis-slave1的容器,并链接到redis-master,redis-master的链接标签为master,并后台执行/bin/bash
68879f1c8643240fa8ab117e80edca1af7ff087d56221519175c3fd235e4bc28

root@xxx:~# docker run -itd --name redis-slave2 --link redis-master:master redis:3.0 /bin/bash   ##使用redis:3.0镜像创建一个名为redis-slave2的容器,并链接到redis-master,redis-master的链接标签为master,并后台执行/bin/bash
9d8b689f4b856ac59a3fb8927faff6d0c99d863f6e5ae6852b99c8ee02046c8b

root@xxx:~# docker ps    ##查看运行中的容器
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                   NAMES
ec079420b80b        redis:3.0           "docker-entrypoint.s…"   53 seconds ago       Up 52 seconds       6379/tcp                redis-slave2
5da26d257045        redis:3.0           "docker-entrypoint.s…"   About a minute ago   Up About a minute   6379/tcp                redis-slave1
1c6b1acfe1ea        redis:3.0           "docker-entrypoint.s…"   5 minutes ago        Up 5 minutes        6379/tcp                redis-master
92a6ea1b024b        ubuntu:16.04        "/bin/bash"              5 days ago           Up 31 minutes                               ubuntu_server-01
dc0cb0d54b15        nginx               "/docker-entrypoint.…"   6 days ago           Up 6 days           0.0.0.0:10001->80/tcp   web_server1

root@xxx:~# docker rm ubuntu_server-01  ##尝试删除运行中的容器,报错
Error response from daemon: You cannot remove a running container 92a6ea1b024b2b240e80cb9396db1f660c89230dbfb1f843f8015817db14992a. Stop the container before attempting removal or force remove

root@xxx:~# docker stop ubuntu_server-01   ##停止运行中的容器ubuntu_server-01 
ubuntu_server-01

root@xxx:~# docker rm ubuntu_server-01     ##删除停止的容器ubuntu_server-01 
ubuntu_server-01
  
root@xxx:~# docker ps -a   ##查看所有容器验证ubuntu_server-01 已被删除
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
ec079420b80b        redis:3.0           "docker-entrypoint.s…"   20 minutes ago      Up 20 minutes       6379/tcp                redis-slave2
5da26d257045        redis:3.0           "docker-entrypoint.s…"   20 minutes ago      Up 20 minutes       6379/tcp                redis-slave1
1c6b1acfe1ea        redis:3.0           "docker-entrypoint.s…"   24 minutes ago      Up 24 minutes       6379/tcp                redis-master
dc0cb0d54b15        nginx               "/docker-entrypoint.…"   6 days ago          Up 6 days           0.0.0.0:10001->80/tcp   web_server1
b22fc7bdc7ab        nginx:latest        "/docker-entrypoint.…"   6 days ago          Created                                     eager_dhawan

root@xxx:~# docker run --name ubuntu_server-01 -d -i -t ubuntu:16.04 /bin/bash  ##重新创建容器ubuntu_server-01
1f5eff05ac16cf8f1c7946c3ceb0e95ee47b5230bd5f88291271fe720f622049

root@xxx:~# docker ps  ##查看运行中的容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
1f5eff05ac16        ubuntu:16.04        "/bin/bash"              32 seconds ago      Up 32 seconds                               ubuntu_server-01
ec079420b80b        redis:3.0           "docker-entrypoint.s…"   23 minutes ago      Up 22 minutes       6379/tcp                redis-slave2
5da26d257045        redis:3.0           "docker-entrypoint.s…"   23 minutes ago      Up 23 minutes       6379/tcp                redis-slave1
1c6b1acfe1ea        redis:3.0           "docker-entrypoint.s…"   27 minutes ago      Up 27 minutes       6379/tcp                redis-master
dc0cb0d54b15        nginx               "/docker-entrypoint.…"   6 days ago          Up 6 days           0.0.0.0:10001->80/tcp   web_server1

root@xxx:~# docker rm -f ubuntu_server-01   ##强制删除运行中的容器ubuntu_server-01
ubuntu_server-01

root@xxx:~# docker ps -a   ##验证容器ubuntu_server-01已被删除
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
ec079420b80b        redis:3.0           "docker-entrypoint.s…"   23 minutes ago      Up 23 minutes       6379/tcp                redis-slave2
5da26d257045        redis:3.0           "docker-entrypoint.s…"   23 minutes ago      Up 23 minutes       6379/tcp                redis-slave1
1c6b1acfe1ea        redis:3.0           "docker-entrypoint.s…"   27 minutes ago      Up 27 minutes       6379/tcp                redis-master
dc0cb0d54b15        nginx               "/docker-entrypoint.…"   6 days ago          Up 6 days           0.0.0.0:10001->80/tcp   web_server1
b22fc7bdc7ab        nginx:latest

root@xxx:~# docker exec  -it  redis-slave2  /bin/bash   ##进入运行中的容器redis-slave2

root@xxx:~# cat /etc/hosts      ## 容器中,查看主机关系信息
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.253.4   master 1c6b1acfe1ea redis-master      ##这里是link信息,链接到192.168.253.4 redis-master这个容器
192.168.253.6   ec079420b80b                          ##容器redis-slave2 ip 主机名

root@ec079420b80b:/data# exit                         ##退出容器redis-slave2
exit

root@xxx:~# docker rm -l /redis-slave2/master    ##删除redis-slave2和redis-master的网桥网络上指定的链接关系,格式"/容器名/链接目标标签"
/redis-slave2/master

root@xxx:~# docker exec  -it  redis-slave2  /bin/bash   ##进入运行中的容器redis-slave2

root@ec079420b80b:/data# cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.253.6   ec079420b80b         ##链接关系已经消失


root@xxx:~# docker ps   ##docker rm -l 只删除容器链接,不删除出容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
ec079420b80b        redis:3.0           "docker-entrypoint.s…"   About an hour ago   Up About an hour    6379/tcp                redis-slave2
5da26d257045        redis:3.0           "docker-entrypoint.s…"   About an hour ago   Up About an hour    6379/tcp                redis-slave1
1c6b1acfe1ea        redis:3.0           "docker-entrypoint.s…"   About an hour ago   Up About an hour    6379/tcp                redis-master
dc0cb0d54b15        nginx               "/docker-entrypoint.…"   6 days ago          Up 6 days           0.0.0.0:10001->80/tcp   web_server1

root@xxx:~# docker rm -v  web_server1  ##删除容器web_server1以及与其关联的所有卷。请注意,如果使用名称指定了卷,则不会将其删除。
web_server1
###关于卷的删除放在数据卷在详细展开     

root@xxx:~# docker rm $(docker ps --filter status=exited -q)   ##删除所有退出状态容器

root@xxx:~# docker ps --filter status=exited -q | xargs docker rm

docker run

由于docker run参数较多,将单开一张讲解

docker start

描述信息

启动一个或多个已停止的容器

命令格式

docker start [OPTIONS] CONTAINER [CONTAINER...]

可用选项
  -a, --attach               ##连接STDOUT/STDERR和前向信号
      --detach-keys string   ##覆盖用于分离容器的密钥序列
  -i, --interactive          ##连接容器的标准输入
示例
root@xxx:~# docker ps -a     ##查看所有容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
a20e113e64c6        ubuntu:16.04        "/bin/bash"         19 seconds ago      Exited (0) 4 seconds ago                       ubuntu_server-01

root@xxx:~# docker start  ubuntu_server-01  ##启动停止状态的容器ubuntu_server-01
ubuntu_server-01

root@xxx:~# docker ps    ##查看运行中的容器验证状态
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
a20e113e64c6        ubuntu:16.04        "/bin/bash"         About a minute ago   Up 3 seconds                            ubuntu_server-01

root@xxx:~# docker stop ubuntu_server-01   ##停止运行中的容器ubuntu_server-01
ubuntu_server-01

root@xxx:~# docker start -a ubuntu_server-01  ##启动停止中的容器ubuntu_server-01,并进入容器,输入任何指令都不会在终端显示,按ctrl+c终止
root@a20e113e64c6:/# exit

^C

root@xxx:~# docker  ps   ##ctrl+c终止后,查看容器依旧是运行状态
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a20e113e64c6        ubuntu:16.04        "/bin/bash"         2 minutes ago       Up 21 seconds                           ubuntu_server-01

root@xxx:~# docker stop ubuntu_server-01   ####停止运行中的容器ubuntu_server-01
ubuntu_server-01

root@xxx:~# docker ps -a    ##查看所有容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
a20e113e64c6        ubuntu:16.04        "/bin/bash"         15 minutes ago      Exited (0) 14 seconds ago                       ubuntu_server-01

root@xxx:~# docker start -i ubuntu_server-01     ##启动停止中的容器ubuntu_server-01,链接到容器标准输入,当退出标准输入之后,然后状态依旧显示为退出
root@a20e113e64c6:/# exit
exit

root@xxx:~# docker ps -a  ##查看所有容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
a20e113e64c6        ubuntu:16.04        "/bin/bash"         28 minutes ago      Exited (0) 4 seconds ago                       ubuntu_server-01

root@xxx:~# docker start -ia ubuntu_server-01   ##和docker start -i 效果差不多
root@a20e113e64c6:/# ls 
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@a20e113e64c6:/# exit
exit

root@xxx:~# docker ps  -a   ##查看所有容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
a20e113e64c6        ubuntu:16.04        "/bin/bash"         31 minutes ago      Exited (0) 12 seconds ago                       ubuntu_server-01

docker stop

描述信息

停止一个或多个运行中的容器,当运行docker stop命令时,默认情况下Docker将发送SIGTERM信号给容器中的主进程以请求其优雅地停止,等待一段时间(默认10秒)后,如果主进程仍未停止,则Docker将发送SIGKILL信号给容器以强制其停止。

命令格式

docker stop [OPTIONS] CONTAINER [CONTAINER...]

可用选项
-t, --time int    ##杀死它之前等待停止的秒数(默认 10
示例
root@xxx:~# docker stop ubuntu_server-01
ubuntu_server-01

docker unpause

描述信息

取消暂停一个或多个容器中的所有进程

命令格式

docker unpause CONTAINER [CONTAINER...]

示例
root@xxx:~# docker pause  ubuntu_server-01  ##挂起运行中的容器ubuntu_server-01
ubuntu_server-01

root@xxx:~# docker ps -a    ##查看所有容器,验证ubuntu_server-01状态
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
a20e113e64c6        ubuntu:16.04        "/bin/bash"         6 hours ago         Up 29 seconds (Paused)                       ubuntu_server-01

root@xxx:~# docker unpause   ubuntu_server-01   ##解除容器ubuntu_server-01挂起状态
ubuntu_server-01

root@xxx:~# docker ps -a    ####查看所有容器,验证ubuntu_server-01状态
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a20e113e64c6        ubuntu:16.04        "/bin/bash"         6 hours ago         Up 46 seconds                           ubuntu_server-01

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值