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

Memasang Kaca Pembesar ke Docker dengan Docker Inspect

Jika Anda mencari tampilan mendetail dari semua komponen utama Docker dari image Docker, container, dan sebagainya, perintah docker inspect cocok untuk Anda.

Dalam tutorial ini, Anda akan belajar bagaimana menemukan menjadi detektif untuk menemukan informasi rinci tentang banyak komponen Docker untuk debugging, pemecahan masalah, atau hanya rasa ingin tahu Anda.

Mari kita mulai!

Prasyarat

Jika Anda ingin mengikuti langkah demi langkah, pastikan Anda memiliki hal berikut:

  • Docker – Tutorial ini menggunakan Docker v19.03.11 di Ubuntu 18.04.5 LTS.
  • Gambar Docker apa pun yang diunduh dan tersedia. Tutorial ini menggunakan image NGINX Docker terbaru yang tersedia di Docker Hub.
  • Setidaknya satu kontainer berjalan di host Docker.

Memeriksa Gambar Docker dengan Docker Inspect

Docker Inspect dapat memberikan informasi tentang banyak komponen Docker yang berbeda tetapi pertama-tama mari kita mulai dengan salah satu komponen yang paling populer; gambar-gambar. Jika Anda telah mengunduh gambar, bagaimana Anda kemudian memeriksa informasi tentang gambar itu? Mari kita cari tahu.

Dengan asumsi Anda memiliki setidaknya satu gambar di host Docker Anda, gunakan inspect perintah untuk menanyakan gambar itu. Perintah di bawah ini mengasumsikan bahwa Anda memiliki gambar bernama nginx di host Anda.

docker image inspect nginx

Setelah dieksekusi, perintah di atas mengembalikan banyak informasi melalui JSON tentang gambar tertentu. Beberapa atribut penting adalah:

  1. Tag gambar.
  2. Waktu gambar dibuat.
  3. Nama host container terkait dengan nginx image Docker.
  4. Port jaringan yang disediakan wadah untuk jaringan luar.
  5. Anda juga akan melihat volume yang dilampirkan ke container milik nginx image Docker.

Mendapatkan Informasi Detail tentang Jaringan Docker

docker inspect perintah tidak hanya diturunkan untuk mengambil informasi tentang gambar dan wadah; itu juga dapat menanyakan jaringan. Jaringan Docker memungkinkan wadah untuk berkomunikasi dengan cara yang berbeda, seperti melalui jaringan jembatan (jaringan pribadi), jaringan host (jaringan publik), atau jaringan overlay.

Mengetahui jaringan Docker penting karena memungkinkan Anda untuk beralih ke jaringan Docker lain kapan saja sesuai kebutuhan aplikasi dengan memutuskan sambungan dan kemudian menghubungkan kembali.

Dengan asumsi Anda masih di terminal:

1. Jalankan perintah di bawah ini. docker network ls perintah mencantumkan semua jaringan yang ada di Docker. Anda memerlukan output dari perintah ini untuk menemukan ID jaringan.

docker network ls

Selanjutnya, berikan ID jaringan ke docker inspect network memerintah. Perintah ini mengembalikan berbagai informasi tentang jaringan tertentu, seperti yang ditunjukkan di bawah ini.

docker inspect network 4748f122c987

1. Jenis jaringan.

2. Alamat subnet yang digunakan jaringan.

3 dan 4. Ringkasan informasi tentang setiap wadah yang menggunakan jaringan khusus ini.

Memahami Template Go Docker dan Format Parameter

Hingga saat ini, Anda telah mempelajari cara menggunakan perintah inspeksi Docker tanpa menggunakan parameter opsi tambahan apa pun. Tetapi jika Anda perlu memanipulasi format output, pertimbangkan untuk menggunakan --format bendera. --format parameter menggunakan templat Go untuk memfilter dan menampilkan informasi yang dikembalikan dari docker inspect .

Berbagai fungsi digunakan bersama dengan format flag, seperti join, println, table, dll. Mari kita bahas beberapa di antaranya!

Misalnya, mungkin Anda ingin menggabungkan beberapa nilai dari output dari wadah tertentu. Jika demikian, join perintah bekerja dengan baik. Di bawah, Anda akan melihat bahwa join perintah menggabungkan string bersama-sama (nginx, -g, daemon off ) dengan setiap elemen dipisahkan oleh pemisah (, ).

docker inspect --format '{{join .Args " , "}}' container_id

Mungkin Anda ingin memanfaatkan nilai? Gunakan upper perintah.

docker inspect --format "{{upper .Name}}" container_id

Anda dapat menemukan berbagai contoh penggunaan format parameter.

Menemukan Nama Gambar Dasar Kontainer Docker

Di bagian sebelumnya, Anda melihat cara mendapatkan tampilan mendetail dari semua gambar Docker Anda, termasuk wadah yang menggunakan gambar tersebut. Tetapi bagaimana jika Anda sudah mengetahui ID penampung dan perlu menemukan gambar tempat pembuatannya dengan cepat? Anda dapat memberikan ID kontainer ke docker inspect .

Untuk menemukan nama image dari mana container tertentu dibuat, jalankan docker inspect memerintah. Perintah di bawah ini meneruskan ID penampung (8f34d039fa3a dalam hal ini) ke docker inspect dan menggunakan format parameter untuk hanya mengembalikan image nilai dari Config simpul dalam keluaran JSON.

# 8f34d039fa3a is the container represented with ContainerID.
docker inspect --format='{{.Config.Image}}' 8f34d039fa3a

Anda dapat melihat keseluruhan Config node terlihat seperti di bawah ini dan di mana Image nama berasal dari.

Menemukan Alamat IP Container, Alamat Mac, dan Port Bindings

Meskipun Anda sekarang tahu cara menemukan jaringan yang digunakan wadah, bagaimana Anda tahu apa alamat IP atau Alamat Mac, dan Port Bindings pada jaringan yang digunakan wadah? Anda menebaknya! docker inspect .

Untuk mempersempit alamat IP yang digunakan container, berikan ID container ke docker inspect memerintah. Sekali lagi, gunakan format parameter untuk memfilter JSON yang tidak diinginkan untuk mendapatkan apa yang Anda cari.

Anda akan melihat format argumen parameter di bawah ini memberi tahu docker inspect hanya untuk mengembalikan nilai yang tertanam di dalam NetworkSettingsNetworksIPAddress Atribut JSON menggunakan range atribut. Atribut range memungkinkan Anda untuk mengulangi array, menyetel . nilai untuk setiap elemen larik.

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my_container

Anda akan melihat NetworkSettings utama simpul di bawah dan di mana IPAddress nilai bersarang.

Demikian pula, untuk menemukan alamat MAC wadah, gunakan docker inspect perintah container seperti di bawah ini.

Sekali lagi, Anda akan melihat bahwa format argumen parameter di bawah ini menggunakan range tapi kali ini, temukan alamat Mac penampung dengan memeriksa NetworkSettingsNetworksMac address .

docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' 3dd206041249

Terakhir, Untuk memeriksa semua ikatan port suatu wadah, jalankan docker inspect di bawah ini memerintah. Anda akan melihat format argumen parameter di bawah ini menggunakan range untuk menemukan binding port container dengan memeriksa NetworkSettingsHostPort .

Anda tidak perlu tahu tentang binding port karena jika ada port yang sudah digunakan, port tersebut tidak boleh digunakan lagi; jika tidak, itu akan memunculkan pesan kesalahan yang menyatakan bahwa port telah dialokasikan.

docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' 8f34d039fa3a

Mendapatkan tampilan mendetail dari Volume Docker Menggunakan Docker Inspect

Hingga saat ini, Anda telah mempelajari cara menemukan informasi mendetail tentang gambar, wadah, dan jaringan, tetapi Anda belum mempelajari tentang penyimpanan. Mari kita ubah itu.

Untuk memastikan tutorial memiliki setidaknya satu volume terpasang yang terpasang ke wadah, pertama-tama buat wadah dan pasang volume penyimpanan.

Jika Anda sudah memiliki volume penyimpanan yang terpasang ke wadah, Anda dapat melewati bagian ini.

Perintah di bawah ini membuat wadah Docker baru bernama my_container , memperlihatkan port 80 ke host (-p 80:80 ), memasang volume berdasarkan /var/container_dir . host direktori bernama mounted_val (-v mounted_vol:/var/container_dir ) menggunakan nginx gambar.

docker run --name my_container -p 80:80 -v mounted_vol:/var/container_dir nginx

Sekarang Anda memiliki volume yang dipasang ke wadah, berikan nama volume ke docker volume inspect . Perhatikan di bawah bahwa perintah mengembalikan output JSON, hanya memberikan informasi tentang volume penyimpanan yang dipasang.

docker volume inspect mounted_vol

Kesimpulan

Anda sekarang seharusnya dapat menggunakan docker inspect perintah dalam banyak situasi berbeda, mulai dari menanyakan informasi tentang gambar, wadah, jaringan, dan penyimpanan.

Bagaimana Anda berencana menggunakan docker inspect untuk menanyakan informasi tentang lingkungan Docker Anda sendiri?


Docker
  1. Instal ModSecurity dengan Apache di Docker Container

  2. Cara Menyebarkan Layanan Mikro dengan Docker

  3. Cara Menyebarkan Aplikasi dengan Rancher

  1. Instal server Wireguard VPN dengan Docker

  2. Siapkan Nextcloud dengan Redis menggunakan Docker

  3. Cara Menginstal Jenkins dengan Docker

  1. Cara menginstal Jaringan Sosial Mastodon dengan Docker di Ubuntu 18.04 LTS

  2. Memulai dengan Gambar Docker yang Dibuat Sebelumnya

  3. Cara Menggunakan Perintah Inspeksi Docker