web-dev-qa-db-ja.com

Mac用のDockerベータ版を使用している私のコンテナのIP番号は何ですか?

以前はDockerツールキットを使用していましたが、コンテナによって提供されているページを表示するためにdocker-machine inspect <machine-name>を使用してdockerマシンのIPを見つけることができました。

私は(Mac用)dockerベータ版クライアントにアップグレードしましたが、ページが提供されている場所を見つけることができません。

これはdocker-pureであり、docker-machineではないため、localhostに公開されたポートが表示されるはずです。しかし、彼らは開かれていません。 kitematic経由でさえ、私は公開されているポート(80)までナビゲートしますが、何も見えません。

$ docker inspect tiny_cori | jq '.[].HostConfig.PortBindings'
{
  "80/tcp": [
    {
      "HostIp": "",
      "HostPort": "80"
    }
  ]
}

$ docker inspect tiny_cori | jq '.[].NetworkSettings.IPAddress'
"172.17.0.2"

$ curl 172.17.0.2:80/status
^C

$ docker exec -t -i tiny_cori /bin/bash

root@f1c303f60a15:/# curl localhost:80/status
{"status":"OK"}

root@f1c303f60a15:/# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope Host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope Host
       valid_lft forever preferred_lft forever
2: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1
    link/sit 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1
    link/tunnel6 :: brd ::
4: ip6gre0@NONE: <NOARP> mtu 1448 qdisc noop state DOWN group default qlen 1
    link/gre6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
26: eth0@if27: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link
       valid_lft forever preferred_lft forever

172.17.0.2は本当に私のコンテナのIPですか?そうでない場合、IPはどこにありますか?それとも、ポートマッピングの問題がありますか?

25
Synesso

あなたは、172.17.0.2であり、dockerコンテナの「内部」(およびそれらの間)にのみ存在するコンテナ内のIPアドレスを見ています。

接続したいIPアドレスは、ホストマシンのIPアドレスです。あなたのMac上でifconfigをして、正しいもの(通常192.168.x.yまたは10.x.y.z)を見つけてください。ローカルホストもコンテナの外側から動作するはずです。

23
Mikael Kjær

次のコマンドを入力すると、docker container ipが表示されます。

$docker inspect <docker-container-name>

下にスクロールすると、 "NetworkSettings"の下にIPアドレスが表示されます。

7
Riddhi Gohil

Docker for MacはIPアドレス127.0.0.1で動作します

5
digitaldavenyc

Ipアドレスはdocker psへの出力に明示的に記載されています。

$ docker ps
CONTAINER ID        ... PORTS
c785a183b376        ... 0.0.0.0:80->80/tcp, 443/tcp

$ curl 0.0.0.0:80/status
{"STATUS":"OK"}

さらに、localhost0.0.0.0と同じではありません

1
Synesso

127.0.0.1はlocalhost用だと思います。

あなたのMac上で走っているdocker idを取得する。端末で "ifconfig"を実行すると、127.0.0.1以外にも結果に表示されます。

ほとんどは192.168.x.yのようなもの

それが役に立てば幸い。

0
Tuananhcwrs