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.
ところで、証明書の再生成も役に立たない。何か案が?
ありがとう。
次の方法で証明書を手動で再生成してください。
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
いくつかの調査を行った後、次の回避策が当面の問題を解決する可能性があることがわかりました。
オープンネットワークと共有センター
[アダプター設定の変更]をクリックします
VPNやVM Wareネットワークアダプターなどの有効なアダプターがあるかどうかを確認します。
それらを無効にして、もう一度コンテナに接続してみてください
他のアダプターを無効にしているときに機能しなかった場合は、PCを再起動します-私の場合、これでうまくいきました。
これは私のために働いた:
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ここに投稿 に触発されました。
ここに私のために働いたものがあります。最初の手順は、Hazhirが提案したものと似ています。その後、証明書を再生成します。
docker-machine start
を実行して、コンテナに接続します。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を実行して仮想マシンを起動する必要がありました。
私の場合、問題を引き起こしたのは私のFortiClient
でした。無効にした後docker-machine env default
再び正常に動作しました。システムで実行中のウイルス対策プログラムがあるかどうかを確認することをお勧めします。
この方法/回避策を試してください:
ここで私の応答を見るのに役立つことを願っています: https://github.com/docker/machine/issues/2808
ドッカーマシンに接続できるようにする方法は、 固定IPを割り当てる (および証明書を1回だけ再生成する)(再起動は不要)
その後、docker-machine ls
は常に機能します。
私の現在のスクリプト:
(%PRGS%\dm\latest
がマシン上のdocker-machine.exe
であるパスに置き換えます)
(PATH
に latest/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が表示されます。
Dockerマシンを起動して、証明書を再生成するだけです
docker-machine start <machine-name>
docker-machine regenerate-certs <machine-name>
それは私にとって魅力のようです。
私にとっては、走っている
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のデフォルトマシンを使用するように構成されました