web-dev-qa-db-ja.com

別のマシンからDocker APIに接続する方法は?

Docker APIを使用して、別のマシンからdockerデーモンに接続しようとしています。私はこのコマンドを正常に行うことができます:

docker -H=tcp://127.0.0.1:4243 images

しかし、実際のIPアドレスを使用する場合はそうではありません。

docker -H=tcp://192.168.2.123:4243 images
2013/08/04 01:35:53 dial tcp 192.168.2.123:4243: connection refused

非ローカルIPを使用しているときに接続できないのはなぜですか?

Vagrantfileで次を使用してVagrant VMを使用しています:config.vm.network :private_network, ip: "192.168.2.123"

以下はiptablesです。

# Generated by iptables-save v1.4.12 on Sun Aug  4 01:24:46 2013
*filter
:INPUT ACCEPT [1974:252013]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1511:932565]
-A INPUT -p tcp -m tcp --dport 4243 -j ACCEPT
COMMIT
# Completed on Sun Aug  4 01:24:46 2013
# Generated by iptables-save v1.4.12 on Sun Aug  4 01:24:46 2013
*nat
:PREROUTING ACCEPT [118:8562]
:INPUT ACCEPT [91:6204]
:OUTPUT ACCEPT [102:7211]
:POSTROUTING ACCEPT [102:7211]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.16.42.0/24 ! -d 172.16.42.0/24 -j MASQUERADE
34

同様の問題に遭遇しましたが、ここで言及されていないことの1つは、ネットワークとUNIXソケットの両方をリッスンするためにdockerを起動する必要があることです。ホスト上のすべての通常のdocker(コマンドライン)コマンドは、ソケットを想定しています。

Sudo docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -d &

ホスト上の任意のIPアドレスと一般的なUNIXソケットをリッスンするdockerを起動します。

61
Andy D

0.0.0.0を聴く必要があります。 127.0.0.1をリッスンすると、ホストの外部の誰も接続できなくなります。

11
creack

これを行う際には、Docker APIへの電子メールアクセス、つまりルート権限により、だれでも、および任意のURLを送信していることに注意してください。

少なくとも、httpsを使用してソケットを保護する必要があります。 http://docs.docker.com/articles/https/

10
SvenDowideit

Dockerデーモンポートを構成する2つの方法があります

1)/ etc/default/docker file:で設定

DOCKER_OPTS="-H tcp://127.0.0.1:5000 -H unix:///var/run/docker.sock"

2)/ etc/docker/daemon.json:で設定する

{
"hosts": ["tcp://<IP-ADDRESS>:<PORT>", "unix:///var/run/docker.sock"]
}

IP-ADDRESS-アクセス可能な任意のアドレスを使用できます。

ポートを構成した後、Dockerサービスを再起動します。

ser port [tcp://127.0.0.1:5000]default docker socket [unix:///var/run/docker.sock]の両方を追加する理由=は、ユーザーポートがdocker APIへのアクセスを有効にし、デフォルトのソケットがCLIを有効にすることです。

1
Here_2_learn