docker服务如何正确关停

说明:停止 docker 服务之前,先把所有的容器都停掉,如果没停掉,再重启 docker 服务之后,所有的容器就会成为 Exited 状态。如果你只是想停止 docker 服务,docker 中的容器还继续提供服务,需要在docker daemon.json 中配置 “live-restore”:true详细配置请参考:docker 官方容器配置live-restore

关闭操作

之前一直使用如下命令关闭 docker 服务

# 禁用 docker 开机自启
systemctl disable docker
# 关停 docker 服务
systemctl stop docker

但是今天使用 systemctl stop docker 命令关停的时候,确返回了如下警告:
image.png

也就是在停止 docker.service,但是又被 docker.socket 激活启动起来了。
此时我们就需要理解 docker 各部分之间的关系才能正确的把 docker 服务停止掉。

docker 相关组成理解

我们安装的 docker 可以分为以下几个内容:
1.docker 客户端
文件名 docker, 一般默认安装在 /usr/bin 目录下。 比如我们执行的 docker ps 调用的就是 docker 客户端程序。

2.dockerd (docker daemon)服务
文件名 dockerd,一般默认安装在 /usr/bin 目录下。 比如我们说的 docker 服务,就是在说的 dockerd 服务。
可以在 /lib/systemd/system 目录下,看到 docker.service 里面有这么句话
在这里插入图片描述
3. docker.socket
文件名 docker.socket, 一般默认安装在 /var/run 目录下。用来实现 docker 客户端和 dockerd 服务 之间的 API 通讯。
该文件 (/var/run/docker.socket) 是一个 linux socket(套接字) 文件,通过 la -al 命令可以看到该文件的标识是 s 。
可以在 /lib/systemd/system 目录下,看到 docker.socket 里面有这么句话
在这里插入图片描述

无法关停的原因分析

如果 docker.socket 服务开启着,并在 docker 客户端执行 docker ps 指令,那么即使现在 dockerd 没有运行,docker.socket 也会将它启动起来。
如果 docker.socket 服务没有处于运行状态,那么就会报错
在这里插入图片描述
所以要真正关闭 docker 服务,要执行如下 2 个命令

# 关闭 docker.socket 服务
systemctl stop docker.socket
# 关闭 docker.service 服务
systemctl stop docker.service
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程皮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值