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

Fra*_*nco 9 package-management apt dpkg docker

我尝试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
Run Code Online (Sandbox Code Playgroud)

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

E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
Run Code Online (Sandbox Code Playgroud)

当我运行该命令时,它只是开始运行从未完成的原始命令。此时,我只想解决这个问题,甚至无法运行 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
Run Code Online (Sandbox Code Playgroud)

我正在运行 Ubuntu 16.04

Tom*_*art 9

似乎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
Run Code Online (Sandbox Code Playgroud)

systemctl start docker.service进程应该就够了:

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

检查 systemd 作业:

sudo systemctl list-jobs
    JOB UNIT           TYPE  STATE  
2831057 docker.service start running
Run Code Online (Sandbox Code Playgroud)

如果有任何 docker 作业正在运行,请杀死它:

sudo systemctl kill docker.service
Run Code Online (Sandbox Code Playgroud)

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

/etc/systemd/system/docker.service.d/
Run Code Online (Sandbox Code Playgroud)

例如覆盖命令(用于17.03发布):

ExecStart=/usr/bin/docker daemon
Run Code Online (Sandbox Code Playgroud)

而不是/usr/bin/dockerd. 在继续之前,请务必杀死任何剩余的 docker 进程:

ps aux | grep "[d]ockerd"
Run Code Online (Sandbox Code Playgroud)

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

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

如果从以前的版本泊坞窗(正在升级docker.iodocker-engine等),或者只是改变底层的文件存储,它的安全安装新版本之前删除所有码头工人的数据。

sudo rm -rf /var/lib/docker
sudo apt install docker-ce
Run Code Online (Sandbox Code Playgroud)

要修复损坏的安装,只需运行sudo dpkg --configure -adocker.service应该开始。