文章目录
- 前言
- [1、docker create](#1、docker create)
- [3、docker start/stop/restart](#3、docker start/stop/restart)
- [4、docker kill](#4、docker kill)
- [5、docker rm](#5、docker rm)
- [6、docker pause/unpause](#6、docker pause/unpause)
- 总结
前言
在云原生时代,Docker已成为必不可少的容器管理工具。通过掌握Docker常用的容器管理命令,可以提高应用部署和运维的效率。本文将揭秘云原生时代必备的Docker容器管理命令,包括容器的创建、启动、停止、删除以及日常运维中常用的命令和技巧。通过学习本文,读者将能够轻松应对云原生时代的容器管理挑战,提高工作效率,实现更高质量的应用部署和运维管理。
1、docker create
创建一个新的容器但不启动它。语法同docker run。
bash
docker create [OPTIONS] CONTAINER
示例:
在一个终端执行docker create,在另一个终端执行docker events。
bash
# 第一个终端
king@king-server:~$ docker create nginx
0f267601d5c102d6f8a894d2a5f719803d3f7010cf1b380cce4ff92396696542
# 第二个终端
king@king-server:~$ docker events
2024-01-26T13:26:57.617217238Z container create 0f267601d5c102d6f8a894d2a5f719803d3f7010cf1b380cce4ff92396696542
(image=nginx, maintainer=NGINX Docker Maintainers <docker-maint@nginx.com>, name=eager_meitner)
2、docker run
创建一个新的容器并运行一个命令。
bash
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
2.1、常用选项
2.2、系统
- --cap-add:添加linux功能
- --cap-drop:删除linux功能
bash
# --cap-add=ALL表示给容器赋予所有的权限,即允许容器内的进程拥有宿主机上的所有权限。
# --cap-drop=MKNOD 表示从容器中剥夺创建设备节点的能力。这意味着容器内的进程将无法创建设备节点,
# 如 /dev/null、 /dev/zero 等
docker run --cap-add=ALL --cap-drop=MKNOD ...
docker run --cap-add=SYS_ADMIN ...
docker run --cap-add=CAP_SYS_ADMIN ...
- --isolation:指定容器的隔离技术。
linux系统:只支持default,即linux命名空间隔离技术。
windows系统:default:表示使用docker守护进程配置的选项,否则默认使用process选项。
process:命名空间隔离
hyperv:基于Hyper-V 管理程序基于分区的隔离
- --platform:设置平台,如果服务器支持多个平台。
- --runtime:用于此容器使用的运行时。
- --security-opt:通过指定--security opt标志来覆盖每个容器的默认标签方案。
- --shm-size:设置/dev/shm设备的大小,/dev/shm是一个基于内存的临时文件系统。
- --storage-opt:容器的存储驱动程序选项
- --sysctl:设置系统参数,默认 map[]。
- --ulimit:设置Ulimit选项,默认[]。
2.3、网络
- --ip:通过该参数,可以在创建容器时手动指定容器使用的ip4地址。
- --ip6:ip6地址。
- --dns 设置自定义dns服务器,将修改容器中 /etc/resolv.conf 文件。
- --dns-option:设置DNS选项,将修改容器中 /etc/resolv.conf 文件。
- --dns-search:设置自定义DNS搜索域名,将修改容器中 /etc/resolv.conf 文件。
- --link-local-ip:设置一个或多个容器的以太网设备的链路本地IPv4/IPv6地址。
- --mac-address:容器Mac地址。
- --network:将容器加入到指定网络。
- --network-alias:为容器添加网络范围的别名。
2.4、健康检查
- --health-cmd:健康检查命令。
- --health-interval:健康检查频率(ms|s|m|h),默认0s。
- --health-retries:健康检查重试次数,连续失败指定次数则判断为不健康。
- --health-start-period:设置启动容器的初始化时间,在此期间的健康检查不作为参考依据,(ms|s|m|h),默认0s。
- --health-timeout:每一次检查超时时间(ms|s|m|h),默认0s。
- --no-healthcheck:禁用健康检查。
3、docker start/stop/restart
- docker start :启动一个或多个已经被停止的容器。
- docker stop :停止一个运行中的容器。
- docker restart :重启容器。
示例:
bash
docker restart mynginx
docker stop mynginx
docker start mynginx
4、docker kill
杀掉一个运行中的容器。
bash
docker kill [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS说明:
-s :向容器发送一个信号。
示例:
bash
docker kill -s KILL mynginx
docker kill -s TERM mynginx
如果容器终止时的状态对用户而言很重要,用户可能会想要了解docker kill 和docker stop之间的区别。docker kill 的行为和标准的kill 命令行程序并不相同。kill 程序的默认工作方式是向指定的进程发送
TERM信号(即信号值为15)。这个信号表示程序应该被终止,但是不要强迫程序终止。当这个信号被处理时,大多数程序将执行某种清理工作,但是该程序也可以执行其他操作,包括忽略该信号。
而docker kill 对正在运行的程序使用的是KILL信号,这使得该进程没办法处理终止过程。这就意味着一些诸如包含运行进程ID之类的文件可能会残留在文件系统中。根据应该用程序管理状态的能力,如果再次启动容器,这可能会也可能不会造成问题。docker stop 命令则像kill 命令那样工作,发送的是一个TERM型号。
5、docker rm
删除一个或多个容器。
bash
docker rm [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS说明:
-f :通过 SIGKILL 信号强制删除一个运行中的容器。
-l :移除容器间的网络连接,而非容器本身。
-v :删除与容器关联的卷。
示例:
删除所有的容器。
bash
docker rm `docker ps -f status=exited -q`
6、docker pause/unpause
- docker pause :暂停容器中所有的进程。
- docker unpause :恢复容器中所有的进程。
bash
docker pause CONTAINER [CONTAINER...]
docker unpause CONTAINER [CONTAINER...]
总结
(1)docker的create命令和run命令区别在于create只创建容器,而run命令除了创建容器还会连接网络和启动容器;start命令会连接网络和启动容器。即docker run = docker create + docker start。
(2)docker stop发送的信号值默认是15,但是nginx构建的时候会指定为3;docker kill发送的信号值是9,强制删除。
(3)docker run使用最多的参数:
- -d, --detach:后台运行容器并打印容器id。
- -i, --interactive:保持标准输入设备处于打开状态。
- -t, --tty:分配一个伪终端设备。
- --rm:当容器退出时,自动删除容器。
- -p, --publish:发布容器端口和主机端口的映射。
- -P, --publish-all:将所有暴露的端口发布到主机随机端口。
- --entrypoint:覆盖镜像默认程序入口。
- --name:指定容器名称。
- --health-cmd:健康检查命令。