web-dev-qa-db-ja.com

TLS接続の確認エラー:証明書の確認および/または再生成のエラー

Windowsを再起動した後、Oracle Virtual Boxで実行されているDockerマシンに接続できません。 Docker QuickStart Terminalを起動すると、すべてが正常に見え、問題なく起動し、次のメッセージが表示されます。

docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com

しかし、私がするとき:

$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL   SWARM   DOCKER   ERRORS
default   -        virtualbox   Timeout

そして:

λ docker images
An error occurred trying to connect: Get http://localhost:2375/v1.21/images/json: dial tcp 127.0.0.1:2375: ConnectEx tcp: No connection could be made because the target machine actively refused it.

また、環境を再初期化しようとすると、次のようになります:

λ docker-machine env default
Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for Host "192.168.99.100:2376": dial tcp 192.168.99.100:2376: i/o timeout
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

ところで、証明書の再生成も役に立たない。何か案が?

ありがとう。

26
Hazhir

次の方法で証明書を手動で再生成してください。

docker-machine --debug regenerate-certs -f default

修正するエラーを確認し、再試行してください:

docker-machine --debug env default

Sshで失敗する場合は、そのコマンドをコピーして端末に貼り付け、余分な-vvを追加して問題を確認します。

あなたが持っている場合:

debug1:アドレス127.0.0.1ポート64368に接続:接続は拒否されました

マシンが実行されていない(docker-machine lsで確認)ので、試してください:

docker-machine start

次に、それを介してsshを試してください:

docker-machine -D ssh default
11
kenorb

いくつかの調査を行った後、次の回避策が当面の問題を解決する可能性があることがわかりました。

  1. オープンネットワークと共有センター

  2. [アダプター設定の変更]をクリックします

  3. VPNやVM Wareネットワークアダプターなどの有効なアダプターがあるかどうかを確認します。

  4. それらを無効にして、もう一度コンテナに接続してみてください

  5. 他のアダプターを無効にしているときに機能しなかった場合は、PCを再起動します-私の場合、これでうまくいきました。

8
Hazhir

これは私のために働いた:

  • VirtualboxからすべてのHost onlyインターフェイスを削除しました(VirtualBox => Preferences => Network => Host-only networks)。
  • _rmdir.exe --ignore-fail-on-non-empty ~/.docker/_
  • _docker-machine start_
  • _docker-machine env_
  • eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env default)(_.bash_profile_の最後にも追加されました。
  • _docker run hello-world_ <-現在rorking

ここに投稿 に触発されました。

5
Pablo Bianchi

ここに私のために働いたものがあります。最初の手順は、Hazhirが提案したものと似ています。その後、証明書を再生成します。

  1. オープンネットワークと共有センター。
  2. [アダプター設定の変更]をクリックします。
  3. アクティブなVMWareネットワークアダプターをすべて無効にします。通常、「VirtualBox Host-Only Ethernet Adapter」という説明があります。
  4. docker-machine startを実行して、コンテナに接続します。
  5. docker-machine envを実行します。あなたが私のような場合、次のエラーが表示されます:

TLS接続の確認エラー:証明書の確認または再生成エラー:ホスト "192.168.99.100:2376"の証明書の検証中にエラーが発生しました:x509:証明書は192.168.99.101ではなく192.168.99.101に有効です

どっちがいい。あとは、実行するだけです

docker-machine regenerate-certs -f default

次に、docker-machine envでもう一度テストします。あなたが取得する場合:

SET DOCKER_TLS_VERIFY=1
SET DOCKER_Host=tcp://192.168.99.100:2376
SET DOCKER_CERT_PATH=C:\Users\Jay\.docker\machine\machines\default
SET DOCKER_MACHINE_NAME=default
REM Run this command to configure your Shell:
REM     FOR /f "tokens=*" %i IN ('docker-machine env') DO %i

これで設定は完了です。私の場合、Docker Quickstart Terminalを実行して仮想マシンを起動する必要がありました。

1
jaycode

私にもこの問題があります。実行docker-machine regenerate-certs <vm-name>は問題を解決できません。 Googleでエラー情報を検索し、以下の解決策を見つけます。

  • 実行Sudo ifconfig vboxnet0 upターミナルで。
  • dockerマシンの状態を表示:docker-machine ls
  • STATEURLは問題ありません。

しかし、この問題が続くシステムを再起動してください。

GitHubの問題 リンクはここにあります。

VirtualBox 5.1.24には bug があるようです。

1
invzhi

私の場合、問題を引き起こしたのは私のFortiClientでした。無効にした後docker-machine env default再び正常に動作しました。システムで実行中のウイルス対策プログラムがあるかどうかを確認することをお勧めします。

0
Guster

この方法/回避策を試してください:

  • まず、$ yourhome/.docker/machine/certs /フォルダーの下にca.pem、cert.pem、key.pem、ca-key.pemがあることを確認します。これらの失われた4つの* .pemファイルについては、他からコピーできます。配置するか、自分で作成することもできます(これらの4つのpemファイルは、最初は正しくないはずです
  • envがbash_profileで正しく設定されていることを確認してください。exportDOCKER_Host = tcp://192.168.99.100:2376 export DOCKER_MACHINE_NAME = default export DOCKER_TLS_VERIFY = 1 export DOCKER_CERT_PATH =/Users/johnwang/.docker/machine/machines/default
  • cmdを再実行します:docker-machine regenerate-certs default(これを実行する前に、おそらくdockerターミナルを再度開く必要があります)macのdocker toolboxで試してみて、動作します。
  • 最後に結果のいくつかのログ:TLS接続の確認エラー:証明書の確認および/または再生成:ホスト "192.168.99.100:2376"の証明書の検証中にエラーが発生しました:x509:不明な機関によって署名された証明書「docker-machine regenerate-certs [name]」を使用します。これによりDockerデーモンの再起動がトリガーされ、コンテナーの実行が停止する可能性があることに注意してください。 ... ... johns-MacBook-Pro:certs johnwang $ docker-machine regenerate-certs default TLSマシン証明書を再生成しますか?警告:これは元に戻せません。 (y/n):y TLS証明書の再生成SSHが使用可能になるのを待機しています...プロビジョニングツールの検出...ローカルマシンディレクトリへの証明書のコピー...リモートマシンへの証明書のコピー...リモートでのDocker構成の設定daemon ... johns-MacBook-Pro:certs johnwang $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default-virtualbox running tcp://192.168.99.100:2376 v17.03.1-ce

ここで私の応答を見るのに役立つことを願っています: https://github.com/docker/machine/issues/2808

0
john

ドッカーマシンに接続できるようにする方法は、 固定IPを割り当てる (および証明書を1回だけ再生成する)(再起動は不要)

その後、docker-machine lsは常に機能します。

私の現在のスクリプト:
%PRGS%\dm\latestがマシン上のdocker-machine.exeであるパスに置き換えます)
PATHlatest/path/to/git/usr/bin が含まれていることを確認してください。sshなどのコマンドを使用可能にするため)

> more dmvbf.bat
@echo off
setlocal enabledelayedexpansion
set machine=%1
if "%machine%" == "" (
        echo dmvbf expects a machine name
        exit /b 1
)
set ipx=%2
if "%ipx%" == "" (
        echo dmvbf x missing ^(for 192.168.x.y^)
        exit /b 2
)
set ipy=%3
if "%ipy%" == "" (
        echo dmvbf y missing ^(for 192.168.x.y^)
        exit /b 3
)

%PRGS%\dm\latest\docker-machine.exe ssh %machine% "Sudo sh -c 'echo \"kill \$(more /var/run/udhcpc.eth1.pid)\" | Sudo tee /var/lib/boot2docker/bootsync.sh >/dev/null'"
%PRGS%\dm\latest\docker-machine ssh %machine% "Sudo sh -c 'echo \"ifconfig eth1 192.168.%ipx%.%ipy% netmask 255.255.255.0 broadcast 192.168.%ipx%.255 up\" | Sudo tee -a /var/lib/boot2docker/bootsync.sh >/dev/null'"

%PRGS%\dm\latest\docker-machine ssh %machine% "Sudo chmod 755 /var/lib/boot2docker/bootsync.sh"

%PRGS%\dm\latest\docker-machine ssh %machine% "Sudo cat /var/run/udhcpc.eth1.pid | xargs Sudo kill"

%PRGS%\dm\latest\docker-machine ssh %machine% "Sudo ifconfig eth1 192.168.%ipx%.%ipy% netmask 255.255.255.0 broadcast 192.168.%ipx%.255 up"

例えば:

dmvbf default 99 100
docker-machine regenerate-certs -f default

これにより、192.168.99.100がdocker machine 'default'に割り当てられ、証明書が1回再生成されます。
その後、docker-machine lsが呼び出されるたびに、 'default'に対して同じIPが表示されます。

0
VonC

Dockerマシンを起動して、証明書を再生成するだけです

docker-machine start <machine-name>

docker-machine regenerate-certs <machine-name>

それは私にとって魅力のようです。

0
Asad Shakeel

私にとっては、走っている

docker-machine --debug regenerate-certs -f name_of_your_vm

うまくいきました。

docker-machine version 0.16.1
virtualBox 6.0

また、DockerはIP 192.168.99.100のデフォルトマシンを使用するように構成されました

0
aurelius