Saya ingin menarik gambar centos, tomcat, ... menggunakan kode sha256 mereka, seperti di
docker pull myimage@sha256:0ecb2ad60
tetapi saya tidak dapat menemukan kode sha256 untuk digunakan di mana pun.
Saya memeriksa repositori dockerhub untuk petunjuk apa pun tentang kode sha256, tetapi tidak dapat menemukannya. Saya mengunduh gambar dengan tag mereka
docker pull tomcat:7-jre8
dan memeriksa gambar dengan docker inspect
untuk melihat apakah ada kode sha256 di metadata, tetapi tidak ada (menambahkan kode sha256 gambar mungkin akan mengubah kode sha256).
Apakah saya harus menghitung sendiri kode sha256 dari sebuah gambar dan menggunakannya?
docker
docker-registry
Kristen
sumber
sumber
Jawaban:
Jawaban terbaru
Edit yang disarankan oleh OhJeez di komentar.
Jawaban asli
Saya yakin Anda juga bisa menggunakan ini
Hanya berfungsi di Docker 1.9 dan jika gambar awalnya ditarik oleh intisari. Detail ada di pelacak masalah buruh pelabuhan.
sumber
docker inspect --format='{{index .RepoDigests 0}}' $IMAGE
tanpa tanda kurung (mengembalikan indeks pertama larik)Anda bisa mendapatkannya
docker images --digests
sumber
docker images --format '{{.Digest}}'
. Ini berguna dalamforeach
pernyataan untuk menyelesaikan beberapa pekerjaan dengan intisari.Baru saja melihatnya:
Ketika saya menarik gambar, kode sha256 ditampilkan di bagian bawah output (Digest: sha ....):
Kode sha ini
dapat digunakan untuk menarik gambar setelahnya dengan
Dengan cara ini Anda dapat yakin bahwa gambar tidak berubah dan dapat digunakan dengan aman untuk produksi.
sumber
Cara paling sederhana dan ringkas adalah:
docker images --no-trunc --quiet $IMAGE
Ini hanya mengembalikan
sha256:...
string dan tidak ada yang lain.misalnya:
Edit:
CATATAN: ini hanya berfungsi untuk gambar lokal. Anda bisa
docker pull $IMAGE
terlebih dahulu, jika diperlukan.sumber
Selain jawaban yang ada, Anda dapat menggunakan
--digests
opsi sambil melakukandocker images
untuk mendapatkan daftar intisari untuk semua gambar yang Anda miliki.Anda dapat menambahkan grep untuk menelusuri lebih jauh
sumber
Seharusnya ini adalah kolom Id, yang bisa Anda lihat di Docker Hub API lama yang sudah tidak digunakan lagi
TAPI: ini bukan cara kerjanya sekarang dengan distribusi buruh pelabuhan baru .
Lihat masalah 628: "Dapatkan ID gambar dengan nama tag"
Jawaban saat ini (pertengahan 2015) adalah:
sumber
Saya menemukan metode di atas tidak berfungsi dalam beberapa kasus. Mereka juga:
Metode di bawah ini rumit, tetapi berfungsi untuk mengekstraksi 'nama' dan hash lengkap tertentu untuk container yang didorong tertentu.
Berikut skenarionya - Sebuah gambar diunggah secara terpisah ke 2 proyek berbeda dalam repo yang sama, jadi meminta RepoDigests mengembalikan 2 hasil.
Saya ingin menggunakan hasil alfa, tetapi saya tidak dapat memprediksi indeksnya. Jadi saya perlu memanipulasi keluaran teks untuk menghapus tanda kurung dan mendapatkan setiap entri pada baris terpisah. Dari situ saya bisa dengan mudah grep hasilnya.
sumber
Seperti yang disebutkan oleh @zelphir, menggunakan intisari bukanlah cara yang baik karena tidak ada untuk gambar khusus lokal. Saya menganggap image ID sha adalah yang paling akurat dan konsisten di seluruh tag / pull / push dll.
Apakah triknya.
sumber
Anda dapat menemukannya pada saat menarik gambar dari repositori masing-masing. Perintah di bawah ini menyebutkan Digest: sha256 pada saat menarik gambar buruh pelabuhan.
09:33 AM ## ~ ::> docker --version Docker versi 19.03.4, build 9013bf5
Intisari: sha256: 6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
Setelah gambar diunduh, kita dapat melakukan hal berikut
"ubuntu @ sha256: 6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d"
sumber
Keluarkan
docker pull tomcat:7-jre8
lagi dan Anda akan mendapatkan apa yang Anda inginkan.sumber