docker-操作

docker的日常操作

stop/start/restart 容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
## docker run 实际上执行了 docker create 和 docker start 两个步骤
## --restart=always 意味着无论容器因何种原因退出(包括正常退出),就立即重启。该参数的形式还可以是 --restart=on-failure:3,意思是如果启动进程退出代码非0,则重启容器,最多重启3次。
# docker run -d -p 5000:5000 -v /opt/registry:/var/lib/registry --restart=always --name registry registry:2.6.2
# docer ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
88a14d70070d registry:2.6.2 "/entrypoint.sh /e..." About an hour ago Up 38 minutes 0.0.0.0:5000->5000/tcp registry
# docker stop 88a14d70070d #可以用容器id或者name都行
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
88a14d70070d registry:2.6.2 "/entrypoint.sh /e..." About an hour ago Exited 2 seconds ago 0.0.0.0:5000->5000/tcp registry
容器在 docker host 中实际上是一个进程,docker stop 命令本质上是向该进程发送一个 SIGTERM 信号。如果想快速停止容器,可使用 docker kill 命令,其作用是向容器进程发送 SIGKILL 信号。
# docker start 88a14d70070d # start 会保留容器的第一次启动时的所有参数。restart 可以重启容器,其作用就是依次执行 docker stop 和docker start
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
88a14d70070d registry:2.6.2 "/entrypoint.sh /e..." About an hour ago Up 2 seconds 0.0.0.0:5000->5000/tcp registry

pause/unpause 容器

有时我们只是希望暂时让容器暂停工作一段时间,比如要对容器的文件系统打个快照,或者 dcoker host 需要使用 CPU,这时可以执行 docker pause。
处于暂停状态的容器不会占用 CPU 资源,直到通过 docker unpause 恢复运行。

1
2
3
4
5
6
7
8
9
10
11
12
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
88a14d70070d registry:2.6.2 "/entrypoint.sh /e..." About an hour ago Up 8 minutes 0.0.0.0:5000->5000/tcp registry
# docker pause 88a14d70070d
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
88a14d70070d registry:2.6.2 "/entrypoint.sh /e..." About an hour ago Up 8 minutes(Paused) 0.0.0.0:5000->5000/tcp registry
# docker unpause 88a14d70070d
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
88a14d70070d registry:2.6.2 "/entrypoint.sh /e..." About an hour ago Up 11 minutes 0.0.0.0:5000->5000/tcp registry

删除容器

使用 docker 一段时间后,host 上可能会有大量已经退出了的容器。

1
2
3
4
5
# docker ps -a
# docker rm 88a14d70070d
docker rm 一次可以指定多个容器,如果希望批量删除所有已经退出的容器,可以执行如下命令:
# docker rm -v $(docker ps -aq -f status=exited)