尽管 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 引擎再次自动启动。