GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Mendapatkan Alamat IP Docker Container Dari Host

Wadah Docker bukan hanya tentang isolasi—wadah ini sering digunakan untuk mengelola proses yang masih perlu berbicara satu sama lain secara langsung. Namun, untuk berkomunikasi, Anda sering kali perlu mengetahui alamat IP setiap container, yang dapat Anda temukan dengan beberapa perintah.

Pertimbangkan Menggunakan Jembatan Buatan Pengguna

Jaringan Docker sedikit rumit. Kontainer yang diluncurkan secara default akan ditempatkan di "jaringan jembatan" default, dan diizinkan untuk berkomunikasi dengan kontainer lain secara langsung, asalkan Anda memiliki alamat IP pribadi mereka. Ini dapat dimatikan untuk isolasi yang sebenarnya, tetapi tidak secara default.

Anda juga dapat menggunakan alamat ini untuk berkomunikasi dari OS host jika Anda tidak ingin mengikat port. Ini adalah kasus penggunaan utama untuk mengakses wadah secara langsung melalui alamat IP-nya, tetapi Anda mungkin masih harus mengikat port (Anda dapat menutupnya dari internet di firewall Anda).

Namun, alamat IP bersifat sementara, dan dapat dengan mudah rusak saat container dihentikan dan dimulai. Untuk komunikasi antar container, Docker memberikan solusi melalui jaringan jembatan yang ditentukan pengguna, yang mungkin harus Anda gunakan jika Anda memiliki beberapa container yang berbicara satu sama lain.

Kontainer yang ditambahkan ke jaringan non-default akan dapat mengakses satu sama lain melalui alias mereka, yang akan diselesaikan ke IP pribadi secara otomatis. Anda dapat membuat jaringan baru, menjalankan container di jaringan tersebut, dan menghubungkan container yang ada ke jaringan. Anda kemudian dapat mengakses wadah lain menggunakan alias sebagai nama host; misalnya, wadah NGINX di sini dapat mengakses instance MongoDB dengan string koneksi mongodb://mongohost:27017 .

docker network create example
docker run --net example --name nginx -d nginx
docker network connect example --alias mongohost mongodb

Ada banyak keuntungan menggunakan jembatan, dan ini direkomendasikan melalui --link lama opsi, yang berfungsi pada jaringan default. Masalah utamanya adalah container di jaringan yang ditentukan pengguna akan diekspos ke port masing-masing, terlepas dari apakah port tersebut dipublikasikan, tetapi Anda dapat menyiapkan beberapa jaringan, jadi ini biasanya tidak menjadi masalah.

Kelemahan lainnya adalah karena jaringan yang ditentukan pengguna memberikan isolasi yang lebih baik, mereka juga melarang Anda mengakses wadah di seluruh jaringan dengan alamat IP pribadinya. Semua wadah di jaringan default dapat berbicara satu sama lain, tetapi setelah dihapus dan ditempatkan di jaringan yang ditentukan pengguna, kemampuan itu dinonaktifkan. Namun, Anda juga dapat meluncurkan container di jaringan default dan jaringan yang ditentukan pengguna, jadi tidak masalah jika Anda memilih untuk membuat container terlihat oleh orang lain.

Mendapatkan Alamat IP Dari Docker

Jika Anda hanya menginginkan alamat IP, cukup mudah untuk mendapatkannya dari OS host. Pertama, Anda harus menemukan ID atau nama penampung yang ingin Anda dapatkan informasinya, yang dapat Anda lakukan dengan:

docker ps

Kemudian, jalankan docker inspect , yang mengembalikan file JSON besar dengan semua informasi tentang penampung. Kami hanya tertarik pada alamat IP, jadi Anda dapat memberikannya opsi pemformatan dengan -f untuk mempersempitnya menjadi hanya alamat.

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

Perintah ini berfungsi dengan baik, tetapi juga hanya mengembalikan info untuk satu wadah yang Anda perlukan IDnya. Jika Anda menginginkan solusi yang lebih konkret, Anda dapat menggunakan docker network inspect yang mencetak info tentang semua wadah di jaringan yang diberikan, secara opsional memformat sebagai tabel pencarian JSON:

docker network inspect bridge -f '{{json .Containers}}'

Mendapatkan Konfigurasi Jaringan Dari Wadah

Wadah Docker benar-benar hanya mekanisme isolasi, dan tidak ada yang mencegah Anda memasuki wadah dan menjalankan perintah Linux biasa seperti ifconfig dan mendapatkan alamat IP seperti itu.

Untuk melakukannya, Anda harus mengambil nama atau ID container dengan docker ps , lalu jalankan exec -it , dalam hal ini, mencetak semua informasi IP:

docker exec -it b94ef3169cd4 ip a


Docker
  1. Cara Memasang Direktori Host Ke Wadah Docker

  2. Cara Mendapatkan Informasi Tentang Kontainer Di Docker

  3. Bagaimana saya bisa mendapatkan informasi wadah Docker Linux dari dalam wadah itu sendiri?

  1. Cara Melepaskan Dari Wadah Docker Tanpa Menghentikannya

  2. Cara Berbagi Data Antar Wadah Docker

  3. Cara Mendaftar Kontainer Docker

  1. Bagaimana Mengelola Kontainer Docker? Praktik terbaik

  2. Cara Mengakses Namespace Jaringan Docker Container dari Host

  3. Bagaimana cara mendapatkan alamat IP saya dari baris perintah?