Berapa nomor IP kontainer saya menggunakan Docker beta untuk mac?

28

Sebelumnya saya menggunakan toolkit Docker dan dapat digunakan docker-machine inspect <machine-name>untuk menemukan IP mesin docker, untuk melihat halaman yang dilayani oleh kontainer di dalamnya.

Saya telah memutakhirkan ke klien beta buruh pelabuhan (untuk mac) dan tidak dapat menemukan di mana halaman disajikan.

Saya berasumsi karena itu buruh pelabuhan murni dan bukan mesin buruh pelabuhan saya akan melihat port yang terbuka di localhost. Tetapi mereka tidak terbuka. Bahkan melalui kitematic saya menavigasi ke port yang terbuka (80) tetapi tidak melihat apa-apa.

$ 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

Apakah 172.17.0.2 benar-benar IP dari wadah saya? Jika tidak, di mana saya dapat menemukan apa IP itu? Atau apakah saya memiliki masalah pemetaan port?

Synesso
sumber

Jawaban:

25

Anda sedang melihat alamat IP di dalam wadah yang 172.17.0.2 dan hanya ada "di dalam" wadah buruh pelabuhan (dan di antara mereka).

Alamat IP yang ingin Anda sambungkan adalah alamat IP mesin host Anda. Lakukan ifconfig pada Mac Anda dan temukan yang tepat (biasanya 192.168.xy atau 10.xyz). Localhost juga harus bekerja dari luar wadah.

Mikael Kjær
sumber
5
Tidak yakin siapa yang menurunkan ini tetapi sebenarnya jawaban yang benar. Dengan Docker untuk Mac, tidak ada lagi perantara VM dengan alamat IP mesin yang terpisah. Memukul tuan rumah (baik melalui IP atau localhost) harus meneruskan permintaan ke wadah selama port dipetakan dengan benar.
DNJohnson
Terima kasih. Saya bingung mengapa ini diturunkan (dua kali). Mungkin karena sepertinya terlalu sederhana untuk menjadi jawaban yang sebenarnya.
Mikael Kjær
Saya tidak mencatat ini. Tapi saya curiga ada sebagian pengguna yang, untuk alasan apa pun, jawaban langsung ini tidak bekerja (atau tidak). Saya menandai sebagai benar.
Synesso
2
Nah inilah hal yang menarik - pada OS X ketika saya pergi ke VM xHyve saya melalui perintah layar dan menjalankan curl localhost: 8080 - Saya mendapat respons dari salah satu wadah. Tetapi jika saya melakukan hal yang sama di terminal OS X - koneksi ditolak. Bagaimana ini bisa terjadi?
mvmn
1
PS Ini terjadi pada wadah yang dibuat melalui docker-compose.
mvmn
8

ketik perintah berikut dan Anda akan mendapatkan ip docker container Anda

$docker inspect <docker-container-name>

Gulir ke bawah dan Anda akan mendapatkan alamat IP di bawah " NetworkSettings "

Riddhi Gohil
sumber
Terima kasih. Saya lupa menyebutkan bahwa saya mencoba ini & tidak berhasil. Pertanyaan saya telah diperbarui.
Synesso
Benar, tetapi Anda tidak bisa melakukan ping. Saya menduga bahwa inilah sebabnya jawaban yang benar di atas ditolak. Pertanyaan saya yang tersisa adalah apakah ada cara untuk menjembatani ke jaringan pada virtual host. Tuan rumah virtual masih ada jika lebih baik diintegrasikan ke dalam MacOS, dan saya yakin Anda dapat melakukan ping alamat IP ini dari sana, tetapi tidak bisakah saya menjembatani ke jaringan itu sehingga mereka tersedia secara lokal di Mac?
Gerry Gleason
6

Docker untuk Mac beroperasi pada alamat IP 127.0.0.1

digitaldavenyc
sumber
itu tidak sepenuhnya pernyataan yang salah: P
jonas
Sebenarnya, ini adalah jawaban paling langsung yang memecahkan masalah saya.
James
1

Alamat ip secara eksplisit disebutkan dalam output ke 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"}

Selanjutnya, localhosttidak sama dengan0.0.0.0

Synesso
sumber
5
0.0.0.0 berarti semua alamat ip pada mesin saat ini dan biasanya digunakan saat mendengarkan, tidak terhubung. Saya tidak mengerti bagaimana ikal di atas akan bekerja.
Mikael Kjær
2
0.0.0.0 adalah alamat ip yang terikat dengan layanan di dalam wadah, dan tidak ada artinya dalam konteks host yang menjalankannya. output di bawah kolom PORTS mengatakan bahwa port kontainer 80 (0.0.0.0:80) dipetakan ke port 80 secara lokal (80 / tcp), serta port 443 secara lokal.
Kevin
1
Tidak, ini tidak sama, tetapi seperti yang ditunjukkan, 0.0.0.0 bukan alamat IP, ini adalah sinyal untuk mendengarkan bahwa saya ingin semuanya termasuk localhost. Dalam konteks menghubungkan keduanya sama kecuali layanan terikat ke IP tertentu (localhost atau IP eksternal).
Gerry Gleason
0

Saya percaya 127.0.0.1 adalah untuk localhost.

Untuk mendapatkan id buruh pelabuhan yang berjalan di Mac Anda. Jalankan "ifconfig" di terminal dan akan ada di hasil selain 127.0.0.1

Sebagian besar seperti 192.168.xy

Semoga ini bisa membantu.

Tuananhcwrs
sumber