web-dev-qa-db-ja.com

Dockerマシンのタイムアウト-マシンを破壊せずに修正する方法?

Docker Machineで繰り返し問題が発生しています。数日ごとにタイムアウトが発生し、これが発生すると回復できません。

_docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL   SWARM   DOCKER   ERRORS
default            virtualbox   Timeout
_

環境情報

_uname -a                 Darwin ColeyMBPR 15.4.0 Darwin Kernel Version 15.4.0: Fri Feb 26 22:08:05 PST 2016; root:xnu-3248.40.184~3/RELEASE_X86_64 x86_64
docker version           1.11.0
docker-machine version   0.7.0
vboxmanage --version     5.0.20r106931
_

試行されたソリューション

次のことを順不同で試しました。

  • Dockerマシンを再起動します。
  • eval "$(docker-machine env default)"を実行しています
  • 証明書の再生成_docker-machine regenerate-certs default_
  • ホストボックスを再起動します。
  • Dockerのアップグレード。
  • Dockerを再インストールします。
  • VirtualBoxのアップグレード。
  • すべてのVirtualBoxホスト専用ネットワークデバイスの削除。

ハック

今私のために働いている唯一のことは、Dockerマシンを破壊して再作成することです。これにより、すべてのイメージとコンテナーが破壊され、再セットアップするのに非常に時間がかかります。

_docker-machine rm -y default && docker-machine create -d virtualbox default && eval $(docker-machine env)
_

試すことができるものはありますか?ありがとう!


更新:5月9日(再現手順)

次の手順でこの問題を確実に再現できます。

  1. 新しく作成したDockerマシンから始めます。
  2. _docker-compose up_を使用して、いくつかのコンテナーをビルドします。
  3. 実行中のコンテナでコンピューターをシャットダウンします。
  4. 再起動後、Dockerマシンがタイムアウトするため、Docker CLIは機能しません。
32
Josh Cole

このコマンドは、digitaloceanドライバーで機能しました。

docker-machine ls -t 20

デフォルトのタイムアウト10秒 が短すぎるようです。

22
Tom

これは通常、マシンを起動および停止する方法に関連する問題です。

Uを使用して解決できます

$ docker-machine stop default

$ docker-machine start default

$ docker-machine regenerate-certs default

「docker-machine restart default」を使用しないでください。ネットワーク構成が更新されないためです。

4

Dockerバージョン1.11.2、ビルドb9f10c9で同じ問題が発生しました

これは私のために働いた-私のドッカーマシンは実行状態に戻ります

$ docker-machine restart

$ eval $(docker-machine env)

3
jset74

これまでのところ、私は少しハックな解決策を持っています-これはドッカーマシンを修正しますが、すべてのコンテナとイメージを破壊します。

スクリプト:rebuild-machine.sh

docker-machine rm -y default
docker-machine create -d virtualbox default
docker-machine stop default
VBoxManage modifyvm "default" --natpf1 "Forwarding App 1,tcp,127.0.0.1,3000,,3000"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 2,tcp,127.0.0.1,3001,,3001"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 3,tcp,127.0.0.1,3004,,3004"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 4,tcp,127.0.0.1,3005,,3005"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 5,tcp,127.0.0.1,3006,,3006"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 6,tcp,127.0.0.1,8081,,8081"
docker-machine start default
eval $(docker-machine env)

説明

  • デフォルトのドッカーマシン、コンテナ、およびイメージを破壊します。
  • VirtualBoxで新しいdockerマシンを作成して停止し、VirtualBoxを変更できるようにします。
  • VirtualBoxのさまざまなアプリケーションにポート転送を追加します。
  • Dockerマシンを起動します。
  • ターミナルがドッカーマシンの新しいIPアドレス用にセットアップされていることを確認します。
1
Josh Cole

私の問題は非常に簡単でした。 ufwファイアウォールでポート2376をブロックしていました。 Docker-machineは、リモートに接続するためにこのポートを開く必要があります。

このページで私の問題に対する答えを見つけました:

1
Rick.H

これは私にとってはうまくいき、私のコンテナは破壊されませんでした:

  1. Oracle仮想ボックスを開き、VMを一時停止しました
  2. DockerマシンでVMを再起動しました

    $ docker-machine restart default

dockerバージョン:1.12.3

docker-machineバージョン:0.8.2、ビルドe18a919

0
tej

Virtualboxを開いて閉じ、すべてのvmを手動で開始しました。状態は再びrunningです

0
Crystal

私の問題は非常に些細なものでした-Dockerマシンを再起動した直後に「docker machine ls」コマンドを実行したため、まだ実行されていなかったためタイムアウトが発生しました。

0
Adam Stepniak