Dockerデーモンが実行されていることを確認するシェルスクリプト - OSxの公式docker

Dockerデーモンが実行されていることを確認するシェルスクリプト - OSxの公式docker

このMac El Capitanには公式Dockerがインストールされています。 Bashファイルを実行するときのコマンドの1つは、dockerデーモンがまだ実行されていない場合に起動することです。

    [[ $(docker-machine status) == "Stopped" ]] && docker-machine start
    eval $(docker-machine env)

以下の出力を得ているので実行されないようです。上記のコードが正しく処理することを期待しています。これには何が必要ですか?

Starting "default"...  
(default) Check network to re-create if needed...  
(default) Waiting for an IP...  
Machine "default" was started.  
Waiting for SSH to be available...  
Detecting the provisioner...  
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.  
Error checking TLS connection: Error checking and/or regenerating the certs:   There was an error validating certificates for host "192.168.99.100:2376": tls: DialWithDialer timed out  
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.  

2番目にスクリプトファイルを実行すると、すべてがスムーズに進みます。

ベストアンサー1

OS X(または現在のmacOS)のDockerは、通常VirtualBoxをハイパーバイザーとして使用してLinux仮想マシン内で実行されます。したがって、dockerを使用してdockerを起動すると、docker-machine start仮想マシンとその中のすべてのサービスが起動して利用可能になるのに時間がかかります。したがって、この問題を解決するには、次の手順を実行できます。

[[ $(docker-machine status) == "Stopped" ]] && docker-machine start
sleep 10
eval $(docker-machine env)

sleep仮想マシンが利用可能になるのにかかる時間は、OS Xホストのハードウェアと仮想マシンがDockerゲストに割り当てられているハードウェアによって異なります。 。

おすすめ記事