docker-ce 安装后子进程永远不会完成

docker-ce 安装后子进程永远不会完成

我尝试docker-ce按照 Docker 官方文档中提供的说明进行安装使用存储库。安装卡在了这里:

Setting up docker-ce (17.09.0~ce-0~ubuntu) ...
insserv: warning: script 'K01postgresql-9.5' missing LSB tags and overrides
insserv: warning: script 'postgresql-9.5' missing LSB tags and overrides

等待了很长时间后,我用 中断了该过程sudo killall apt-get。现在,每当我尝试使用使用 apt-get 的命令时,它都会显示以下内容:

E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.

当我运行该命令时,它只会开始运行永远不会完成的原始命令。此时,我只想解决这个问题,甚至无法运行 Docker(我只是想尝试一下)。

我已经尝试过大多数答案了相关问题。我甚至无法使用,sudo apt-get remove docker-ce因为我遇到了同样的问题。

关于docker安装的一些信息:

docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor  preset: e
Drop-In: /etc/systemd/system/docker.service.d
       └─ubuntu.conf
Active: activating (start) since mié 2017-11-22 15:38:31 CST; 7min ago
 Docs: https://docs.docker.com
Main PID: 1431 (docker)
Tasks: 6
Memory: 18.4M
  CPU: 21ms
CGroup: /system.slice/docker.service
       └─1431 /usr/bin/docker -d -H fd://

docker-ce:
Installed: 17.09.0~ce-0~ubuntu
Candidate: 17.09.0~ce-0~ubuntu
Version table:
*** 17.09.0~ce-0~ubuntu 100
    100 /var/lib/dpkg/status

我正在运行 Ubuntu 16.04

答案1

看起来它docker-ce挂在服务启动上:

 \_ apt install docker-ce
     \_ /usr/bin/dpkg --status-fd 64 --configure --pending
         \_ /bin/sh /var/lib/dpkg/info/docker-ce.postinst configure
             \_ /bin/sh /usr/sbin/invoke-rc.d docker start
                 \_ systemctl start docker.service
                     \_ /bin/systemd-tty-ask-password-agent --watch

杀死systemctl start docker.service进程就足够了:

sudo kill -9 $(ps aux | grep "systemctl start docker.service" | head -n 1 | awk '{print $2}')

检查 systemd 作业:

sudo systemctl list-jobs
    JOB UNIT           TYPE  STATE  
2831057 docker.service start running

如果有任何 Docker 作业正在运行,请终止它:

sudo systemctl kill docker.service

确保验证您没有定义任何覆盖:

/etc/systemd/system/docker.service.d/

例如覆盖命令(在17.03发布中使用):

ExecStart=/usr/bin/docker daemon

而不是/usr/bin/dockerd。继续之前,请务必终止所有剩余的 docker 进程:

ps aux | grep "[d]ockerd"

停止剩余的 Docker 守护进程(如果有):

sudo kill -9 $(ps aux | grep "[d]ockerd" | head -n 1 | awk '{print $2}')

如果您从以前的docker版本(等)升级docker.iodocker-engine只是更改底层文件存储,则在安装新版本之前删除所有docker数据会更安全。

sudo rm -rf /var/lib/docker
sudo apt install docker-ce

要修复损坏的安装,只需运行sudo dpkg --configure -a即可docker.service启动。

答案2

我遇到了同样的问题,以下是我完全删除docker的所有步骤。希望对您有所帮助

停止 Docker 服务

service docker stop

安装中断后移除锁

rm /var/lib/dpkg/lock

恢复

dpkg --configure -a

如果 dpkg 卡住了,请从不同的终端停止 docker 服务

service docker stop 

删除所有 docker 包并清理

apt-get remove docker docker-engine docker.io docker-ce
apt-get purge docker docker-engine docker.io docker-ce
apt-get autoremove
apt-get autoclean

删除所有docker相关文件

rm -rf /lib/systemd/system/docker.service
rm -rf /etc/docker
rm -rf /var/lib/docker
rm -rf /run/docker.sock
rm -rf /etc/systemd/system/docker.service.d

可选的更新包

apt-get update / upgrade / dist-upgrade

重启

reboot

答案3

我昨天也遇到了同样的问题。我重启了服务器:

sudo reboot

并重新配置包:

sudo dpkg --configure -a

问题已解决。

答案4

我遇到了完全相同的问题,并按如下方式解决了它(我的问题的根源是将 docker 从旧版本更新到最新版本):

1.- 停止 docker 服务(试图使用错误的守护进程命令启动):systemctl stop docker.service

2.- 修改 docker daemon 命令语法(从旧版本更改为最新版本):/etc/systemd/system/docker.service.d/50-docker_dns.conf 从:ExecStart=/usr/bin/docker daemon ... 更改为:ExecStart=/usr/bin/dockerd ...

3.- 重新启动 docker 守护进程以便加载新配置:systemctl start docker.service

相关内容