多Docker守护进程疑问:状态查看、并发运行及容器指定
Docker多守护进程常见问题解答
1. 如何查看两个Docker实例的当前状态?
有几种实用的方法:
- 验证进程存活状态:通过PID文件读取进程ID,再检查进程是否存在:
# 检查默认守护进程 cat /var/run/docker.pid && ps -p $(cat /var/run/docker.pid) # 检查新守护进程 cat /var/run/docker-bootstrap.pid && ps -p $(cat /var/run/docker-bootstrap.pid) - 查看所有dockerd进程:直接过滤进程列表:
ps aux | grep dockerd | grep -v grep - 通过socket验证服务可用性:针对每个守护进程的socket执行信息查询命令,能返回正常输出说明服务运行正常:
# 验证默认守护进程 docker -H unix:///var/run/docker.sock info # 验证新守护进程 docker -H unix:///var/run/docker-bootstrap.sock info
2. 执行指定命令后,两个守护进程会同时运行吗?
只要默认的Docker守护进程没有停止,执行你给出的dockerd命令启动新守护进程后,两个守护进程会同时运行。
注意:如果直接在终端执行该命令,终端会被占用,建议将新守护进程配置成systemd服务后台运行,或者在命令末尾加&临时放到后台(但后台进程可能会因终端关闭而终止,更推荐用systemd管理)。
3. 启动容器时能否指定到特定守护进程?如何操作?
完全可以,常用两种操作方式:
- 命令行直接指定
-H参数:- 容器A运行在默认守护进程:直接执行常规
docker run命令(默认连接/var/run/docker.sock),也可以显式声明:docker -H unix:///var/run/docker.sock run --name containerA <镜像名> - 容器B运行在新守护进程:指定新守护进程的socket路径:
docker -H unix:///var/run/docker-bootstrap.sock run --name containerB <镜像名>
- 容器A运行在默认守护进程:直接执行常规
- 通过环境变量临时切换默认守护进程:设置
DOCKER_HOST后,后续所有docker命令会默认使用该守护进程:# 切换到新守护进程 export DOCKER_HOST=unix:///var/run/docker-bootstrap.sock # 此时启动容器B会自动关联新守护进程 docker run --name containerB <镜像名> # 切回默认守护进程 unset DOCKER_HOST # 启动容器A关联默认守护进程 docker run --name containerA <镜像名>
内容的提问来源于stack exchange,提问作者K327
相关产品推荐
相关产品推荐

