ホームページ  >  記事  >  運用・保守  >  docker-machineが起動できない問題の解決方法

docker-machineが起動できない問題の解決方法

藏色散人
藏色散人オリジナル
2022-01-04 16:07:363540ブラウズ

docker-machine が起動できない問題の解決策: 1. "docker-machine ls" を使用してホストの状態を確認する; 2. 既存の docker をアンインストールし、再インストールする; 3. docker を起動して、ホストの状態を確認するdocker サービスのステータス。

docker-machineが起動できない問題の解決方法

この記事の動作環境: centos7 システム、Docker バージョン 19.03.9、Dell G3 コンピューター。

docker-machine が起動できない問題を解決するにはどうすればよいですか?

Centos7 docker-machine が docker ホストをデプロイし、docker サービスが開始できない

背景:

Centos7 Core を docker として使用する計画テストを構築するホスト プラットフォームには 4 つのホストのみがあり、Swarm ソリューションを使用します。

#環境:

ホスト名システムIP アドレス準備作業docker-host1CentOS7コアxxx.xxx.xxx.80docker- host2CentOS7 Corexxx.xxx.xxx.81docker-host3CentOS7 Corexxx.xxx.xxx を使用するように docker-machine を構成します。 82#docker- host4yum ソースを更新し、aliyun ミラーを使用し、次のように更新します。最新のステータスdesktop#インストール:
yum ソースを更新し、aliyun ミラーを使用し、最新のステータスに更新します。

docker-machine で使用するユーザーを設定し、sudo passwd-free

yum ソースを更新し、aliyun イメージを使用し、最新のステータスに更新します

ユーザー、sudo パスワードなし

yum ソースを更新し、aliyun ミラーを使用し、最新のステータスに更新します。

docker-machine で使用するユーザーを設定し、sudo パスワードを無料にします

CentOS7 Core xxx.xxx.xxx.83

構成 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 サービスを開始できないことが示されています:

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-machine ls を使用してホストのステータスを表示します:

:~/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 endpoint
docker-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:        fec3683
systemctl を使用して 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 をアンインストールして再インストール

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
docker を起動して docker サービスの状態を確認

$ 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。