Saya melakukan docker pull dan dapat membuat daftar gambar yang diunduh. Saya ingin melihat isi gambar ini. Melakukan pencarian di internet tetapi tidak ada jawaban langsung.
Saya melakukan docker pull dan dapat membuat daftar gambar yang diunduh. Saya ingin melihat isi gambar ini. Melakukan pencarian di internet tetapi tidak ada jawaban langsung.
Jawaban:
Anda bisa menjalankan wadah shell interaktif menggunakan gambar itu dan menjelajahi konten apa pun yang dimiliki gambar itu.
Misalnya:
docker run -it image_name sh
Atau mengikuti untuk gambar dengan entrypoint
docker run -it --entrypoint sh image_name
Atau, jika Anda ingin melihat bagaimana gambar itu dibuat, artinya langkah-langkahnya Dockerfile, Anda bisa:
docker image history --no-trunc image_name > image_history
Langkah-langkahnya akan masuk ke image_historyfile.
docker run -it --entrypoint cmd <image_name>akan berfungsi.
Jawaban yang diterima di sini bermasalah, karena tidak ada jaminan bahwa suatu gambar akan memiliki sejenis shell interaktif. Misalnya, gambar drone / drone berisi pada satu perintah /drone, dan ia memiliki ENTRYPOINTjuga, jadi ini akan gagal:
$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured
Dan ini akan gagal:
$ docker run --rm -it --entrypoint sh drone/drone
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"sh\": executable file not found in $PATH".
Ini bukan konfigurasi yang tidak biasa; banyak gambar minimal hanya berisi binari yang diperlukan untuk mendukung layanan target. Untungnya, ada mekanisme untuk mengeksplorasi sistem file gambar yang tidak bergantung pada konten gambar. Yang paling mudah mungkin adalah docker exportperintah, yang akan mengekspor sistem file kontainer sebagai arsip tar. Jadi, mulailah sebuah wadah (tidak masalah jika gagal atau tidak):
$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured
Kemudian gunakan docker exportuntuk mengekspor sistem file ke tar:
$ docker export $(docker ps -lq) | tar tf -
Di docker ps -lqsana berarti "beri saya id wadah buruh pelabuhan terbaru". Anda bisa menggantinya dengan nama atau id wadah eksplisit.
Anda tidak harus memulai wadah hanya untuk melihat konten gambar. Misalnya, Anda mungkin ingin mencari konten berbahaya, bukan menjalankannya. Gunakan "buat" bukan "jalankan";
docker create --name="tmp_$$" image:tag
docker export tmp_$$ | tar t
docker rm tmp_$$
docker export tmp_$$ > image-fs.tar.
docker export tmp_$$ | tar ttidak akan bekerja.
tarmungkin tidak diinstal pada mesin Anda. Cobalah tar --helpuntuk memeriksanya.
-oparameter untuk menentukan file untuk menulis. Misalnya docker export -o c:\temp\tmp_$$.tar tmp_$$.
docker save nginx > nginx.tar
tar -xvf nginx.tar
File-file berikut ada:
https://sreeninet.wordpress.com/2016/06/11/looking-inside-container-images/
ATAU
Anda dapat menggunakan dive untuk melihat konten gambar secara interaktif dengan TUI
dockerhanya perlu melihat isi dari apa, pada dasarnya, hanya jenis file arsip yang berbeda.
docker save --output nginx.tar nginx:latestjika tidak, menurut doc, itu akan berisi "semua lapisan induk, dan semua tag + versi"
Untuk membuat daftar konten terperinci dari suatu gambar Anda harus menjalankan di docker run --rm image/name ls -alRmana --rmberarti menghapus segera setelah keluar dari sebuah wadah.
lstersedia dan dalamPATH
MENJELAJAHI GAMBAR DOCKER !
Mencari tahu apa jenis shell yang di sana bashatau shatau ...
Periksa gambar terlebih dahulu: docker inspect name-of-container-or-image
Mencari entrypointatau cmdmengembalikan json.
Kemudian lakukan: docker run --rm -it --entrypoint=/bin/bash name-of-image
sekali di dalam do: ls -lsaatau perintah shell lainnya seperti:cd ..
The -itsingkatan interaktif ... dan tty. yang --rmsingkatan kontainer menghapus setelah menjalankan.
ls. Atau benar-benar ada alat umum sama sekali.
Kita dapat mencoba yang lebih sederhana sebagai berikut:
docker image inspect image_id
Ini berfungsi dalam versi Docker:
DockerVersion": "18.05.0-ce"
Ada alat open source gratis yang disebut Anchore yang dapat Anda gunakan untuk memindai gambar kontainer. Perintah ini akan memungkinkan Anda untuk membuat daftar semua file dalam gambar wadah
konten gambar anchore-cli myrepo / app: file terbaru