6
docker version 1.9.1
swarm version 1.0.1

3 つの VM (ブリッジされたネット) を swarm に接続する理由。「docker info」はすべてのノードを表示します

ステータス保留中。

3 つのホストのうち 1 つがマネージャーであり、すべての出力はこのホストからのものです。どこを探せばいいのかわからない。

実行中swarm --debug manage token://XXXXX

出力 >>

*INFO[0000] Listening for HTTP addr=127.0.0.1:2375 proto=tcp

DEBU[0000] Failed to validate pending node: Cannot connect to the docker engine endpoint  Addr=10.32.1.38:2375

DEBU[0000] Failed to validate pending node: Cannot connect to the docker engine endpoint  Addr=10.32.1.4:2375

DEBU[0000] Failed to validate pending node: Cannot connect to the docker engine endpoint  Addr=10.32.1.33:2375

それで

root@ubuntu:~# ps -ef | grep swarm

root 2158  1391  0 12:28 pts/2 00:00:00 swarm join token://xxxxxxx --addr 10.32.1.4:2375

root 2407  1213  0 13:57 pts/1 00:00:00 swarm manage token://xxxxxxx -H 0.0.0.0:4243

root 2413  1391  0 13:57 pts/2    00:00:00 grep --color=auto swarm

それで

root@ubuntu:~# swarm list token://xxxxxxxxxxx

10.32.1.4:2375
10.32.1.33:2375
10.32.1.38:2375

それで

root@ubuntu:~# ps -ef | grep docker

root      2330     1  0 12:52 ?        00:00:00 /usr/bin/docker daemon

root      2421  1391  0 14:10 pts/2    00:00:00 grep --color=auto docker

ソートされたハートビート - バックグラウンドで実行され、チェックされたポート、名前解決、マネージャーからの ping 可能。

4

5 に答える 5

8

docker デーモンは、3 つの異なるタイプの Socket ( unixtcp、およびfd ) でリッスンできます。

デフォルトでは、docker デーモンは unix ソケットをリッスンするだけです。

Docker デーモンにリモートでアクセスする必要がある場合は、tcp ソケットを有効にする必要があります。

docker swarm クラスターを作成する場合、swarm マネージャーは、swarm エージェント ノードの docker デーモンにリモートでアクセスする必要があります。

したがって、 docker デーモンを再構成する必要があります。

vim /etc/default/docker

次の行を追加します。

DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"

docker デーモンを再起動する

sudo restart docker

これにより、docker デーモンにリモートでアクセスできます。

参考文献:

  1. Docker ドキュメント: docker デーモン
  2. Docker ドキュメント: 開発用の群れを作成する
于 2016-01-31T03:07:32.373 に答える
3

構成方法は、Docker を実行しているホスト OS によって異なります。

Docker デーモンの構成手順を参照してください(下にスクロールしてホスト OS を見つけます) :
Docker 構成ドキュメント

Red Hat Enterprise Linux 7.2を実行しています。したがって、上記のリンクから自分の OS の構成手順に従い、次のことを行いました。

  1. mkdir /etc/systemd/system/docker.service.d
  2. docker.conf ファイルを作成する
    vi /etc/systemd/system/docker.service.d/docker.conf
  3. 以下を docker.conf ファイルに追加して保存します。

    [Service]
    ExecStart=
    ExecStart=/usr/bin/docker daemon -D -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
    
  4. 変更のフラッシュ

    systemctl daemon-reload
    
  5. Docker を再起動する

    systemctl restart docker
    

構成の重要な行 (およびドキュメントから少し逸脱した場所) は次のとおりです。

ExecStart=/usr/bin/docker daemon -D -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

これを少しずつ見ていきましょう。

  • /usr/bin/dockerdocker バイナリから開始
  • daemonDocker デーモンを起動する
  • -Dデバッグモードで開始 (必須ではありません)
  • -H unix:///var/run/docker.sockデフォルトの Docker Socket を作成します
  • -H tcp://0.0.0.0:2375すべてのネットワーク インターフェイスでポート 2375 をリッスンする tcp Docker ソケットを作成します。

これらの変更を行った後、docker swarm コンテナー (および私の場合は Consul コンテナーも) を再起動し、実行して、エラーが発生docker -H tcp://<IP_OF_SWARM_MASTER>:<PORT_YOU_TOLD_SWARM_MASTER_TO_LISTEN_ON> infoしなくなったかどうかを確認しました。Cannot connect to the docker engine endpoint

于 2016-04-06T22:18:53.440 に答える
3

/etc/default/docker に DOCKER_OPTS 値を追加しました

DOCKER_OPTS="-H <>ホスト IP<>:2375 -H unix:///var/run/docker.sock"

より正確には、 << Host IP >> は、 /etc/default/docker ファイルを編集しているのと同じホスト IP です。

多分それは誰かを助けるでしょう。

于 2016-01-18T15:19:03.563 に答える