Bagaimana cara mendapatkan alamat IP dari menjalankan docker container

Saya menggunakan Docker untuk Mac. Saya menjalankan nodejs berdasarkan microservice dalam kontainer Docker. Saya ingin menguji node microservice melalui browser. Bagaimana cara mendapatkan alamat IP dari menjalankan docker container?

Mengomentari pertanyaan (1)

Jika anda don't ingin memetakan port dari host anda untuk wadah dapat anda akses langsung ke docker range ip untuk wadah. Kisaran ini secara default hanya diakses dari host anda. Anda dapat memeriksa wadah jaringan data melakukan:

docker inspect 

Mungkin lebih baik untuk filter:

docker inspect  | grep '"IPAddress"' | head -n 1

Biasanya, default docker ip range 172.17.0.0/16. Host anda harus 172.17.0.1 dan wadah pertama harus 172.17.0.2 jika semuanya normal dan anda didn't menentukan semua jaringan khusus pilihan.

EDIT Lain cara yang lebih elegan menggunakan docker fitur bukan "bash menipu":

docker inspect -f "{{ .NetworkSettings.IPAddress }}" 
Komentar (12)

Gunakan --format pilihan untuk hanya mendapatkan alamat IP bukan seluruh wadah info:

sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' 
Komentar (1)

Untuk docker engine menggunakan perintah ini :

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

dan untuk yang lebih tua mesin yang digunakan :

docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id
Komentar (0)

jika anda ingin mendapatkan hal yang tepat dalam wadah, anda dapat mencoba

ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17
Komentar (0)

Anda dapat memulai wadah dengan bendera -P. Ini "menetapkan" random port untuk terkena port dari gambar anda.

Dengan docker port <container id> anda dapat melihat secara acak dipilih port. Akses maka mungkin melalui localhost:port.

Komentar (0)

Untuk kasus saya, di bawah ini bekerja pada Mac:

Aku tidak bisa akses kontainer IPs langsung pada Mac. Saya perlu menggunakan localhost dengan port forwarding, misalnya jika port 8000, maka http://localhost:8000

Lihat https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds

Asli jawabannya adalah dari: https://github.com/docker/for-mac/issues/2670#issuecomment-371249949

Komentar (0)

Anda tidak dapat mengakses docker's IP dari luar mesin host. Jika browser anda pada mesin lain yang lebih baik untuk memetakan host port untuk pelabuhan kontainer dengan melewati -p 8080:8080 untuk menjalankan perintah.

Lewat -p anda dapat memetakan host port untuk container port dan proxy diatur untuk meneruskan semua traffix untuk kata host port untuk tempat khusus pelabuhan kontainer.

Komentar (0)