每次启动Lubuntu 16.04笔记本电脑时,我都能看到我有一个正在运行的docker容器:
$ ps -ef | grep docker
root 1724 1 3 21:17 ? 00:01:30 /usr/bin/dockerd -H fd://
root 1774 1724 0 21:17 ? 00:00:04 docker-containerd -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
root 4750 1774 0 21:17 ? 00:00:00 docker-containerd-shim 72541a4648b890132985daf2357d1130b8b5208cf12ede607b93ab2987629719 /var/run/docker/libcontainerd/72541a4648b890132985daf2357d1130b8b5208cf12ede607b93ab2987629719 docker-runc
stephane 10755 1793 0 22:07 pts/0 00:00:00 grep docker
它在端口80上提供Jenkins应用程序,并在浏览器中请求localhost/
重定向到http://localhost/login?from=%2F
并显示Jenkins警告页面:
Unlock Jenkins
To ensure Jenkins is securely set up by the administrator, a password has been written to the log (not sure where to find it?) and this file on the server:
wget请求显示:
$ wget localhost/
--2017-05-23 22:09:55-- http://localhost/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2017-05-23 22:09:55 ERROR 403: Forbidden.
我如何知道哪个服务启动了这个泊坞程序?
我查看了/etc/init.d/
目录:
$ l /etc/init.d/
alsa-utils* checkroot-bootclean.sh* halt* mattermostd* nginxd* rc* single* uuidd*
anacron* checkroot.sh* hostname.sh* mountall-bootclean.sh* ntp* rc.local* skeleton whoopsie*
apachedsd* console-setup* httpd* mountall.sh* ondemand* rcS* ssh* x11-common*
apparmor* cron* hwclock.sh* mountdevsubfs.sh* openvpn* README tomcatd*
apport* cups* irqbalance* mountkernfs.sh* php-fpm* reboot* udev*
avahi-daemon* cups-browsed* keyboardd* mountnfs-bootclean.sh* plymouth* redis* ufw*
bluetooth* dbus* killprocs* mountnfs.sh* plymouth-log* resolvconf* umountfs*
bootmisc.sh* docker* kmod* mysqld* postfix* rsync* umountnfs.sh*
cgroupfs-mount* dropboxd* lightdm* networking* pppd-dns* rsyslog* umountroot*
checkfs.sh* grub-common* mariadbd* network-manager* procps* sendsigs* urandom*
/etc/init.d/docker
是我的,并将其从目录中删除,重新启动仍然会出现一个正在运行的docker进程。
我删除了/etc/init.d/docker
文件,重新启动,并且有一个泊坞程序:
$ ps -ef | grep docker
root 1560 1 5 22:15 ? 00:00:06 /usr/bin/dockerd -H fd://
root 1645 1560 0 22:15 ? 00:00:00 docker-containerd -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
root 4644 1645 0 22:15 ? 00:00:00 docker-containerd-shim 069db46cca05d43c35f05ff50aaa836507cbf69e4e3d9443b6b859d0edb5b076 /var/run/docker/libcontainerd/069db46cca05d43c35f05ff50aaa836507cbf69e4e3d9443b6b859d0edb5b076 docker-runc
stephane 5520 1741 0 22:17 pts/0 00:00:00 grep docker
所以我在所有这些文件中查找了所有的docker,但没有找到名为docker的东西:
$ cd /etc/init.d/
[stephane@stephane-ThinkPad-X301 init.d]
$ grep.sh docker
[stephane@stephane-ThinkPad-X301 init.d]
每次启动笔记本电脑时都会有这个泊坞程序进程,即使在离线时也是如此。
什么启动了这个泊坞程序?
答案 0 :(得分:3)
Lubuntu 16.04附带default的systemd。在某些时候你必须在docker中启动一个jenkins实例 - 很难确切地说明启动最初的过程。但是,systemd
将是目前正在启动它的内容。要阻止它运行,请运行以下命令:
systemctl status docker
< - systemctl
认为docker正在运行。
它可能会显示如下:
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2017-05-21 22:59:46 EDT; 1 day 17h ago
Docs: http://docs.docker.com
Main PID: 1314 (dockerd-current)
Tasks: 14 (limit: 8192)
CGroup: /system.slice/docker.service
└─1314 /usr/bin/dockerd-current --add-runtime oci=/usr/libexec/docker/docker-runc-current --default-runtime=oci --containerd /run/containerd.sock --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --selinux-enabled --log-driver=journald
要停止它,请运行systemctl stop docker
,然后systemctl disable docker
。作为最后的手段,如果这不起作用,您可以运行systemctl mask docker
。
答案 1 :(得分:1)
Docker正在您的环境中由systemd启动。您可以通过运行以下命令禁用整个引擎:
sudo systemctl disable docker
sudo systemctl stop docker
您也可以只停止正在运行的容器(shim和Jenkins应用程序):
sudo docker ps # lists the running containers along with their container id
sudo docker update --restart=no $container_id
sudo docker stop $container_id
如果你知道你不需要这个容器并想要永久删除它,你可以运行它而不是上面两个最后的命令:
sudo docker rm -f $container_id
如果容器当前正在运行,-f
开关也会停止。
编辑:从您的评论中,您的容器在swarm模式下运行,该模式正在重新部署它。要停止它,首先要找到正在运行它的堆栈或服务。
sudo docker stack ls
sudo docker service ls
如果您看到列出的堆栈,则可以使用以下命令删除它:
sudo docker stack rm $stack_name
如果没有列出堆栈,或者它们不适用于此容器,您可以删除该服务:
sudo docker service rm $service_name