35

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
4

4 に答える 4

63

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

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

ホスト上の任意の IP アドレスと、典型的な UNIX ソケットをリッスンする docker を開始します。

于 2013-11-03T22:18:42.247 に答える