docker-machine が起動できない問題の解決策: 1. "docker-machine ls" を使用してホストの状態を確認する; 2. 既存の docker をアンインストールし、再インストールする; 3. docker を起動して、ホストの状態を確認するdocker サービスのステータス。
この記事の動作環境: centos7 システム、Docker バージョン 19.03.9、Dell G3 コンピューター。
docker-machine が起動できない問題を解決するにはどうすればよいですか?
Centos7 docker-machine が docker ホストをデプロイし、docker サービスが開始できない
背景:
Centos7 Core を docker として使用する計画テストを構築するホスト プラットフォームには 4 つのホストのみがあり、Swarm ソリューションを使用します。
#環境:
システム | IP アドレス | 準備作業 | |
CentOS7コア | xxx.xxx.xxx.80 | yum ソースを更新し、aliyun ミラーを使用し、最新のステータスに更新します。docker-machine で使用するユーザーを設定し、sudo passwd-free | |
CentOS7 Core | xxx.xxx.xxx.81 | yum ソースを更新し、aliyun イメージを使用し、最新のステータスに更新しますユーザー、sudo パスワードなし | |
CentOS7 Core | xxx.xxx.xxx を使用するように docker-machine を構成します。 82 | yum ソースを更新し、aliyun ミラーを使用し、最新のステータスに更新します。docker-machine で使用するユーザーを設定し、sudo パスワードを無料にします | |
CentOS7 Core | xxx.xxx.xxx.83 | yum ソースを更新し、aliyun ミラーを使用し、次のように更新します。最新のステータス |
構成 docker-machine で使用されるユーザー、sudo パスワードなし |
ubuntu-18.04lts | 設定不要 秘密キーを使用して docker-host にログイン |
作業中のデスクトップ (Ubuntu) ホストに docker-machine をインストールします。 https://docs.docker.com/machine/install-machine/
最初に docker-host1:をインストールします。
docker-machine --debug create --driver generic - -generic-ip-address=xxx.xxx.xxx.80 --generic-ssh-key=/home/sleeber/.ssh/id_rsa - -generic-ssh-port=22 --generic-ssh-user=wntime docker -host1
docker-machine ls を使用してホストのステータスを表示します:インストールの最終出力には、docker サービスを開始できないことが示されています:
sudo systemctl -f start docker SSH cmd err, output: exit status 1: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. Error creating machine: Error running provisioning: something went wrong running an SSH command command : sudo systemctl -f start docker err : exit status 1 output : Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. notifying bugsnag: [Error creating machine: Error running provisioning: something went wrong running an SSH command command : sudo systemctl -f start docker err : exit status 1 output : Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. ]
:~/docker-test-env$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS docker-host1 - generic Running tcp://xxx.xxx.xxx.80:2376 Unknown Unable to query docker version: Cannot connect to the docker engine endpointdocker-host1 ホストに SSH で接続し、docker サービスを手動で開始します
sudo systemctl start docker Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.プロンプトに従ってステータスを確認します
systemctl status docker.service ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/docker.service.d └─10-machine.conf Active: failed (Result: start-limit) since Thu 2020-05-28 20:41:39 EDT; 581ms ago Docs: https://docs.docker.com Process: 30463 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --storage-driver overlay2 --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem --label provider=generic (code=exited, status=1/FAILURE) Main PID: 30463 (code=exited, status=1/FAILURE)
谷歌一下: https://github.com/moby/moby/issues/33931 https://www.jianshu.com/p/bd395fdf7611 https://www.jianshu.com/p/93518610eea1検索結果によると、10-machine.conf が原因のはずですが、10-machine.conf ファイルとフォルダが削除されていても起動できません
$ sudo rm /etc/systemd/system/docker.service.d/10-machine.conf $ sudo systemctl start docker Failed to start docker.service: Unit is not loaded properly: Invalid argument. See system logs and 'systemctl status docker.service' for details. $ sudo rm -rf /etc/systemd/system/docker.service.d/ $ sudo systemctl start docker Failed to start docker.service: Unit is not loaded properly: Invalid argument. See system logs and 'systemctl status docker.service' for details.dockerd を使用すると直接起動できます
$ sudo nohup dockerd & [1] 31419 $ nohup: ignoring input and appending output to ‘nohup.out’ $ ll total 4 -rw-------. 1 root root 2638 May 28 20:52 nohup.out $ tail -f nohup.out tail: cannot open ‘nohup.out’ for reading: Permission denied tail: no files remaining $ sudo tail -f nohup.out time="2020-05-28T20:52:56.409646032-04:00" level=warning msg="Base device already exists and has filesystem xfs on it. User specified filesystem will be ignored." storage-driver=devicemapper time="2020-05-28T20:52:56.430282474-04:00" level=info msg="[graphdriver] using prior storage driver: devicemapper" time="2020-05-28T20:52:56.430326847-04:00" level=warning msg="[graphdriver] WARNING: the devicemapper storage-driver is deprecated, and will be removed in a future release" time="2020-05-28T20:52:56.433336530-04:00" level=warning msg="mountpoint for pids not found" time="2020-05-28T20:52:56.433595847-04:00" level=info msg="Loading containers: start." time="2020-05-28T20:52:56.529329426-04:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address" time="2020-05-28T20:52:56.558933143-04:00" level=info msg="Loading containers: done." time="2020-05-28T20:52:56.570819898-04:00" level=info msg="Docker daemon" commit=9d988398e7 graphdriver(s)=devicemapper version=19.03.9 time="2020-05-28T20:52:56.570873940-04:00" level=info msg="Daemon has completed initialization" time="2020-05-28T20:52:56.585131361-04:00" level=info msg="API listen on /var/run/docker.sock" ^C $ sudo docker version Client: Docker Engine - Community Version: 19.03.9 API version: 1.40 Go version: go1.13.10 Git commit: 9d988398e7 Built: Fri May 15 00:25:27 2020 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.9 API version: 1.40 (minimum version 1.12) Go version: go1.13.10 Git commit: 9d988398e7 Built: Fri May 15 00:24:05 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683systemctl を使用して docker サービスのステータスを確認しても失敗が表示されます
$ sudo systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/docker.service.d └─10-machine.conf Active: failed (Result: start-limit) since Thu 2020-05-28 20:49:52 EDT; 4min 59s ago Docs: https://docs.docker.com Process: 31051 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --storage-driver overlay2 --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem --label provider=generic (code=exited, status=1/FAILURE) Main PID: 31051 (code=exited, status=1/FAILURE) May 28 20:49:50 test-java2 systemd[1]: docker.service failed. May 28 20:49:52 test-java2 systemd[1]: docker.service holdoff time over, scheduling restart. May 28 20:49:52 test-java2 systemd[1]: Stopped Docker Application Container Engine. May 28 20:49:52 test-java2 systemd[1]: start request repeated too quickly for docker.service May 28 20:49:52 test-java2 systemd[1]: Failed to start Docker Application Container Engine. May 28 20:49:52 test-java2 systemd[1]: Unit docker.service entered failed state. May 28 20:49:52 test-java2 systemd[1]: docker.service failed. May 28 20:50:45 test-java2 systemd[1]: start request repeated too quickly for docker.service May 28 20:50:45 test-java2 systemd[1]: Failed to start Docker Application Container Engine. May 28 20:50:45 test-java2 systemd[1]: docker.service failed.docker-machine で docker のインストールにまだ問題があると推測され、手動インストールしかできません
注注: docker をアンインストールした後、/etc/systemd/system/docker.service.d/ フォルダーを手動で削除する必要があります。そうしないと、新しくインストールされた docker が起動しません。
docker を起動して docker サービスの状態を確認既存の docker をアンインストールして再インストール
sudo yum remove docker* \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine sudo rm -rf /etc/systemd/system/docker.service.d/ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io
$ sudo docker version Client: Docker Engine - Community Version: 19.03.10 API version: 1.40 Go version: go1.13.10 Git commit: 9424aeaee9 Built: Thu May 28 22:18:06 2020 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.10 API version: 1.40 (minimum version 1.12) Go version: go1.13.10 Git commit: 9424aeaee9 Built: Thu May 28 22:16:43 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683正常に起動できます推奨調査: 「
docker ビデオ チュートリアル
」以上がdocker-machineが起動できない問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。