报错信息
意思是,docker.socket可能也会把docker服务启动起来
解决
检查服务状态
systemctl status docker
systemctl is-enabled docker
停止docker.socket
systemctl stop docker.socket
停止docker
systemctl stop docker
知识扩展
安装了docker后,docker可以分为几个部分的内容:
-
docker客户端。
我们在shell中运行docker ps,docker image,其实调用的是docker客户端程序。一般存在于/usr/bin下,名字叫docker. -
docker守护
存在于/usr/bin下,名字叫dockerd。我们讲的docker服务,实质上更多的就是这个dockerd服务。 -
docket.socket
用来实现docker和dockerd之间API通讯。在/lib/systemd/system/docker.socket中,是这样描述的:
cat /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