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.io如果您要從先前的 docker 版本(等)升級docker-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

相關內容