Apakah mungkin membuat Dockerfile dari sebuah gambar? Saya ingin tahu karena dua alasan:
Saya dapat mengunduh gambar dari repositori tetapi ingin melihat resep yang dihasilkannya.
Saya menyukai gagasan menyimpan foto, tetapi begitu saya selesai, akan lebih baik jika memiliki format terstruktur untuk meninjau apa yang telah dilakukan.
image
repository
docker
pengguna1026169
sumber
sumber
Jawaban:
Kamu bisa.
Ini akan menarik gambar buruh pelabuhan target otomatis dan ekspor
Dockerfile
. Parameter-sV=1.36
tidak selalu diperlukan.Referensi: https://hub.docker.com/repository/docker/alpine/dfimage
di bawah ini adalah jawaban lama, tidak berfungsi lagi.
sumber
Untuk memahami bagaimana gambar buruh pelabuhan dibangun, gunakan
docker history --no-trunc
perintah.Anda dapat membuat file buruh pelabuhan dari suatu gambar, tetapi itu tidak akan memuat semua yang Anda ingin pahami sepenuhnya bagaimana gambar itu dihasilkan. Apa yang bisa Anda ekstrak adalah bagian PEMELIHARAAN, ENV, EXPOSE, VOLUME, WORKDIR, ENTRYPOINT, CMD, dan ONBUILD pada dockerfile.
Script berikut ini bisa digunakan untuk Anda:
Saya menggunakan ini sebagai bagian dari skrip untuk membangun kembali wadah yang sedang berjalan sebagai gambar: https://github.com/docbill/docker-scripts/blob/master/docker-rebase
Dockerfile terutama berguna jika Anda ingin dapat mengemas ulang suatu gambar.
Yang perlu diingat, adalah gambar buruh pelabuhan sebenarnya hanya bisa menjadi cadangan tar dari mesin nyata atau virtual. Saya telah membuat beberapa gambar buruh pelabuhan dengan cara ini. Bahkan riwayat pembuatan menunjukkan saya mengimpor file tar besar sebagai langkah pertama dalam membuat gambar ...
sumber
Error response from daemon: page not found
Saya entah bagaimana benar-benar kehilangan perintah yang sebenarnya dalam jawaban yang diterima, jadi ini dia lagi, sedikit lebih terlihat dalam paragrafnya sendiri, untuk melihat berapa banyak orang seperti saya
sumber
ub.docker.com/r/chenzj/dfimage
? Itu bahkan jawaban yang lebih baru.docker history
mencetak garis Dockerfile dalam urutan terbalik dan itu menjatuhkanRUN
instruksi (Anda hanya mendapatkan perintah itu sendiri, bukanRUN
keyworkd di depannya) dan hal-hal lain, jadi Anda perlu mengeditnya secara manual untuk sampai ke Dockerfile yang dapat dibangun. Alat lain itu dapat melakukan pengeditan ini secara otomatis untuk Anda (saya tidak mencobanya, jadi saya tidak tahu.)Solusi bash:
Penjelasan langkah demi langkah:
Contoh:
sumber
Saat ini tidak memungkinkan (kecuali pembuat gambar secara eksplisit menyertakan Dockerfile).
Namun, itu pasti sesuatu yang bermanfaat! Ada dua hal yang akan membantu untuk mendapatkan fitur ini.
sumber
Perbarui Des 2018 untuk jawaban BMW
sumber
Ini berasal dari jawaban @ fallino, dengan beberapa penyesuaian dan penyederhanaan dengan menggunakan opsi format output untuk riwayat buruh pelabuhan . Karena macOS dan Gnu / Linux memiliki utilitas baris perintah yang berbeda, versi yang berbeda diperlukan untuk Mac. Jika Anda hanya membutuhkan satu atau yang lain, Anda bisa menggunakan garis itu.
sumber
di bawah ini adalah ouput dari perintah dfimage: -
$ dfimage 0f1947a021ce
DARI simpul: 8 WORKDIR / usr / src / app
File COPY: e76d2e84545dedbe901b7b7b0c8d2c9733baa07cc821054efec48f623e29218c di ./
RUN / bin / sh-c npm install
Dir COPY: a89a4894689a38cbf3895fdc0870878272bb9e09268149a87a6974a274b2184a di.
EXPOSE 8080
CMD ["npm" "start"]
sumber