如何在 Linux 下停止 docker

How to stop docker under Linux

我的版本 OS Ubuntu 16.04。 我想停止docker,所以我在终端运行:

sudo systemctl stop docker

但是这个命令对我没有帮助:

gridsim1103 ~: ps ax | grep docker 
11347 ?        Sl     0:00 containerd-shim 487e3784f983274131d37bde1641db657e76e41bdd056f43ef4ad5adc1bfc518 /var/run/docker/libcontainerd/487e3784f983274131d37bde1641db657e76e41bdd056f43ef4ad5adc1bfc518 runc
14299 pts/2    S+     0:00 grep --color=auto docker
29914 ?        S      0:00 sudo dockerd -H gridsim1103:2376
29915 ?        Sl     4:45 dockerd -H gridsim1103:2376
29922 ?        Ssl    0:24 containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim containerd-shim --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime runc
30107 ?        Sl     1:01 /usr/bin/docker-proxy -proto tcp -host-ip 188.184.80.77 -host-port 8500 -container-ip 192.17.0.2 -container-port 8500
30139 ?        Sl     0:00 /usr/bin/docker-proxy -proto tcp -host-ip 188.184.80.77 -host-port 8400 -container-ip 192.17.0.2 -container-port 8400

docker 服务器的版本是:

Server:
 Version:      1.12.1
 API version:  1.24 (minimum version )
 Go version:   go1.6.2
 Git commit:   23cf638
 Built:        Tue, 27 Sep 2016 12:25:38 +1300
 OS/Arch:      linux/amd64
 Experimental: false

我也试过失败:

 sudo service docker stop

ps aux 的输出看起来你没有从 docker 开始到 systemd/systemctl。

看起来你是从以下开始的:

sudo dockerd -H gridsim1103:2376

当您尝试使用 systemctl 停止它时,不会发生任何事情,因为生成的 dockerd 进程不受 systemd 控制。所以你看到的行为是意料之中的。

开始docker的正确方法是使用systemd/systemctl:

systemctl enable docker
systemctl start docker

在此之后,docker 应该在系统启动时启动。

编辑:由于您已经拥有 docker 进程 运行,只需在启动它的终端上按 CTRL+C 即可终止它。或者给进程发送kill信号。

在我的例子中,它既不是 systemd 也不是 cron 作业,但它是 snap。 所以我不得不 运行:

sudo snap stop docker
sudo snap remove docker

...而且最后一条命令居然没有结束,我不知道为什么:这个snap东西真的很痛苦。所以我也运行:

sudo apt purge snap

:-)

如果您没有 systemctl 并通过以下方式启动了 docker 守护程序:

sudo service docker start

您可以通过以下方式停止它:

sudo service docker stop

首先,我通过以下命令停止 docker:

sudo systemctl stop docker

然后我收到消息:Warning: Stopping docker.service, but it can still be activated by: docker.socket。 所以,我也停止了套接字:

sudo systemctl stop docker.socket

注意:您只能在 docker.socket 触发时启动和停止它。

停止docker:

docker stop docker_id

例如:

docker stop 1fec077018w4

移除 docker:

docker rm docker_id

例如:

docker rm 1fec077018w4

不要停:

docker-compose kill -s SIGINT

docker重启:

docker-compose restart