1、docker容器按用途来怎么进行分类?
a、服务类容器以 daemon 的形式运行,对外提供服务。比如 web server,数据库等。通过 -d 以后台方式启动这类容器是非常合适的。如果要排查问题,可以通过 exec -it 进入容器。
b、工具类容器通常给能我们提供一个临时的工作环境,通常以 run -it 方式运行,运行 busybox,run -it 的作用是在容器启动后就直接进入。我们这里通过 wget 验证了在容器中访问 internet 的能力。执行 exit 退出终端,同时容器停止,工具类容器多使用基础镜像,例如 busybox、debian、ubuntu 等。
2、容器运行相关的小知识点
a、当 CMD 或 Entrypoint 或 docker run 命令行指定的命令运行结束时,容器停止。
b、通过 -d 参数在后台启动容器。
c、通过 exec -it 可进入容器并执行命令。
3、指定容器的三种方法
a、短ID。
b、长ID。
c、容器名称。 可通过 --name 为容器命名。重命名容器可执行docker rename。
4、如何停止容器?
通过 docker stop 可以停止运行的容器。容器在 docker host 中实际上是一个进程,docker stop 命令本质上是向该进程发送一个 SIGTERM 信号。如果想快速停止容器,可使用 docker kill 命令,其作用是向容器进程发送 SIGKILL 信号。
5、如何启动容器?
docker start 会保留容器的第一次启动时的所有参数。
docker restart 可以重启容器,其作用就是依次执行 docker stop 和docker start。
容器可能会因某种错误而停止运行。对于服务类容器,我们通常希望在这种情况下容器能够自动重启。启动容器时设置 --restart 就可以达到这个效果。
--restart=always 意味着无论容器因何种原因退出(包括正常退出),就立即重启。该参数的形式还可以是 --restart=on-failure:3,意思是如果启动进程退出代码非0,则重启容器,最多重启3次。
6、如何暂停和恢复容器?
有时我们只是希望暂时让容器暂停工作一段时间,比如要对容器的文件系统打个快照,或者 dcoker host 需要使用 CPU,这时可以执行 docker pause。
处于暂停状态的容器不会占用 CPU 资源,直到通过 docker unpause 恢复运行。
7、如何删除容器?
使用 docker 一段时间后,host 上可能会有大量已经退出了的容器。
这些容器依然会占用 host 的文件系统资源,如果确认不会再重启此类容器,可以通过 docker rm 删除。
docker rm 一次可以指定多个容器,如果希望批量删除所有已经退出的容器,可以执行如下命令:
docker rm -v $(docker ps -aq -f status=exited)
顺便说一句:docker rm 是删除容器,而 docker rmi 是删除镜像。
8、如何先创建容器,稍后再启动?
a、docker create 创建的容器处于 Created 状态。
b、docker start 将以后台方式启动容器。 docker run 命令实际上是 docker create 和 docker start 的组合。
9、--restart什么情况下生效?
只有当容器的启动进程 退出 时,--restart 才生效。
退出包括正常退出或者非正常退出。这里举了两个例子:启动进程正常退出或发生 OOM,此时 docker 会根据 --restart 的策略判断是否需要重启容器。但如果容器是因为执行 docker stop 或docker kill 退出,则不会自动重启。