docker 服务每小时启动一次,尽管它被禁用

docker 服务每小时启动一次,尽管它被禁用

尽管 docker.service 已禁用,但它会在每小时的整点启动。我停止了它,并且由于未知的原因它在下一个小时开始再次开始......我没有找到任何可以触发它的 crontabs。

我的系统上出现此问题的示例:

[root@c2 ~]# while true;do date;ps -ef|grep docke[r];sleep 5;done
Sun Dec  1 16:59:45 UTC 2019
Sun Dec  1 16:59:50 UTC 2019
Sun Dec  1 16:59:55 UTC 2019
Sun Dec  1 17:00:00 UTC 2019
Sun Dec  1 17:00:05 UTC 2019
root      8930     1  4 17:00 ?        00:00:00 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --init-path=/usr/libexec/docker/docker-init-current --seccomp-profile=/etc/docker/seccomp.json --selinux-enabled --log-driver=journald --signature-verification=false --storage-driver overlay2
root      8935  8930  0 17:00 ?        00:00:00 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc --runtime-args --systemd-cgroup=true
Sun Dec  1 17:00:10 UTC 2019
root      8930     1  2 17:00 ?        00:00:00 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --init-path=/usr/libexec/docker/docker-init-current --seccomp-profile=/etc/docker/seccomp.json --selinux-enabled --log-driver=journald --signature-verification=false --storage-driver overlay2
root      8935  8930  0 17:00 ?        00:00:00 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc --runtime-args --systemd-cgroup=true
^C

以及docker服务状态:

[root@c2 spool]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2019-12-01 17:00:03 UTC; 4min 31s ago
     Docs: http://docs.docker.com
 Main PID: 8930 (dockerd-current)
   CGroup: /system.slice/docker.service
           ├─8930 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/lib...
           └─8935 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd...

答案1

docker包安装的服务由docker-ce两个单元文件控制:

[root@docker system]# rpm -ql docker-ce | grep /lib/systemd/system
/usr/lib/systemd/system/docker.service
/usr/lib/systemd/system/docker.socket

无论是否服务正在运行,它可以通过与套接字的连接来激活:也就是说,每当您(或 cron 作业或其他人)运行命令时docker,如果docker服务尚未运行,它将启动以提供服务连接。

要完全禁用 Docker,您需要:

systemctl disable --now docker.service docker.socket

使用disable --now将(a)停止服务和套接字单元并(b)防止它们在主机重新启动时重新启动。

答案2

当我也停止(并禁用)服务时,docker 服务不再每小时启动docker-cleanup.timer(我发现它在“systemctl | grep docker”输出上运行):

  docker-cleanup.timer         loaded active waiting   Run docker-cleanup every hour

当我在centos上启动docker时,docker-cleanup.timer会再次启动,并且当我使用“systemctl stop docker”停止docker时不会停止。它导致在下一个小时 docker 引擎再次自动启动。

相关内容