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 -adocker.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 デーモンのコマンド構文を (古いバージョンから最新バージョンに変更された) /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

関連情報