Saya menggunakan Docker untuk Mac. Saya menjalankan microservice berbasis nodejs dalam wadah Docker. Saya ingin menguji layanan mikro node melalui browser. Bagaimana cara mendapatkan alamat IP dari menjalankan container docker?
docker
containers
docker-for-mac
pengguna3067875
sumber
sumber
Jawaban:
Jika Anda tidak ingin memetakan port dari host Anda ke container, Anda dapat mengakses langsung ke ip kisaran docker untuk container. Rentang ini secara default hanya diakses dari host Anda. Anda dapat memeriksa data jaringan container Anda dengan melakukan:
Mungkin lebih baik untuk memfilter:
Biasanya, kisaran ip buruh pelabuhan default adalah
172.17.0.0/16
. Host Anda harus172.17.0.1
dan penampung pertama Anda harus172.17.0.2
jika semuanya normal dan Anda tidak menentukan opsi jaringan khusus.EDIT Cara lain yang lebih elegan menggunakan fitur buruh pelabuhan daripada "bash tricking":
sumber
localhost
:)http://172.17.0.2:anyPort
dari host. Tentu saja jika Anda ingin mengaksesnya menggunakan localhost di host, Anda harus memetakan port. Akan melihat apa yang diinginkan OP.docker run --name struts --rm -i tomcat
2. Dapatkan ip container Anda (jika Anda hanya memiliki satu):docker inspect struts | grep '"IPAddress"' | head -n 1
3. Buka di browser hosthttp://x.x.x.x:8080
. Anda dapat melihat halaman default Apache Tomcat.Gunakan
--format
opsi untuk hanya mendapatkan alamat IP, bukan seluruh info penampung:sumber
Untuk mesin buruh pelabuhan modern gunakan perintah ini:
dan untuk mesin yang lebih tua digunakan:
sumber
jika Anda ingin mendapatkannya langsung di dalam wadah, Anda dapat mencobanya
sumber
Anda dapat memulai wadah Anda dengan bendera
-P
. Ini "menetapkan" port acak ke port gambar Anda yang terbuka.Dengan
docker port <container id>
Anda dapat melihat port yang dipilih secara acak. Akses kemudian dimungkinkan melaluilocalhost:port
.sumber
Untuk kasus saya, di bawah ini berfungsi di Mac :
Saya tidak dapat mengakses IP kontainer secara langsung di Mac. Saya perlu menggunakan
localhost
dengan port forwarding, misalnya jika portnya 8000, makahttp://localhost:8000
Lihat https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds
Jawaban asli berasal dari: https://github.com/docker/for-mac/issues/2670#issuecomment-371249949
sumber
Anda tidak dapat mengakses IP buruh pelabuhan dari luar mesin host itu. Jika browser Anda berada di komputer lain, lebih baik memetakan port host ke port container dengan meneruskan
-p 8080:8080
perintah untuk menjalankan.Meneruskan
-p
Anda dapat memetakan port host ke port kontainer dan proxy disetel untuk meneruskan semua lalu lintas untuk port host tersebut ke port kontainer yang ditunjuk.sumber