docker服务无法关停的原因

最近对交付的项目进行维护,需要关停docker服务。一开始做了如下操作:

systemctl stop docker

systemctl disable docker

以为后面设备重启时,docker就会自动关闭了。结果重启后,发现docker还是启动了。

systemctl is-enabled docker,确实发现docker是disable的。那是怎么回事呢?

这次直接在命令行中,执行systemctl stop docker,发现有警告,如下:

意思是,docker.socket可能也会把docker服务启动起来。

检查了一下,docker.socket的状态,发现这个服务确实处于运行状态。

 那docker.socket又是干啥用的呢?

原来,安装了docker后,docker可以分为几个部分的内容:

1. docker客户端。

我们在shell中运行docker ps,docker image,其实调用的是docker客户端程序。一般存在于/usr/bin下,名字叫就做docker.

2. docker守护

存在于/usr/bin下,名字叫dockerd。我们讲的docker服务,实质上更多的就是这个dockerd服务。

3. docket.socket

用来实现docker和dockerd之间API通讯。在/lib/systemd/system/docker.socket中,是这样描述的:

我们执行docker指令时,实际上客户端会将指令发给dockerd。通过什么方式传送指令呢?默认是通过/var/run/docker.sock这个socket来实现(如果不是,需要在/etc/docker下面创建daemon.json文件)。但是通讯的话,光有socket这个通道是不够的,还需要访问这个通道的客户端和服务端程序。服务端程序就是docker.socket了。所以如果把docker.socket服务开启,同时执行docker ps等客户端指令,那么即使此时dockerd没有运行,docker.socket也会去将它拉起来。但是如果docker.socket这个服务也没有处于运行状态,那么就会报错:

 所以要真正关闭docker服务,除了systemctl stop docker.service,还需要systemctl stop docker.socket。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值