Anda menggunakan mulai dari wadah, jika Anda sebelumnya telah menghentikan wadah ini. Anda menggunakan lari ke gambar, jika Anda sebelumnya telah menghapus wadah gambar ini. Ini adalah penggunaan dasar yang saya pikir.
CodeSlave
Jawaban:
351
Ini adalah pertanyaan yang sangat penting dan jawabannya sangat sederhana, tetapi mendasar:
Jalankan: buat wadah baru dari sebuah gambar, dan jalankan wadah. Anda dapat membuat klon N dari gambar yang sama. Perintahnya adalah:
docker run IMAGE_IDdan tidakdocker run CONTAINER_ID
Mulai: Luncurkan wadah yang sebelumnya berhenti. Misalnya, jika Anda telah menghentikan database dengan perintah docker stop CONTAINER_ID, Anda dapat meluncurkan kembali wadah yang sama dengan perintah docker start CONTAINER_ID, dan data dan pengaturan akan sama.
Apakah volume perlu dibuat untuk wadah yang dihentikan agar data tetap ada?
Logan Phillips
@LoganPhillips Perbedaan siklus hidup antara file yang ditulis ke layer default filesystem union penyimpan dan file yang ditulis ke volume adalah: data layer filesystem union penyimpan selalu hilang saat melepaskan wadah ( docker rm container_id). Di sisi lain, volume data selamat dari penghapusan wadah kecuali jika -vopsi secara eksplisit diberikan pada baris perintah. Lokasi volume pada sistem host dapat diperiksa secara langsung. Lihat artikel ini
Stphane
Soal proses, perlu & di akhir runbaris perintah? Saya membutuhkannya sebagai layanan (24 jam) yang tak terhitung jumlahnya
Peter Krauss
Lalu apa tujuan dari "buruh pelabuhan membuat"? Bagaimana / kapan itu digunakan?
The docker runPerintah pertama menciptakan wadah lapisan ditulisi atas gambar yang ditentukan, dan kemudian mulai menggunakan perintah yang ditentukan.
Artinya, buruh pelabuhan menjalankan setara dengan API /containers/createitu /containers/(id)/start.
@Tarik Anda tidak perlu menambahkan -iuntuk docker rununtuk proses interaktif? Maksud saya, buruh pelabuhan membutuhkan gambar untuk menjalankan wadah.
VonC
10
Tampaknya ada ruang bagi seseorang untuk menulis respons yang lebih rumit. Jawabannya tidak terlihat sangat jelas.
Anggap Anda memiliki gambar permainan (iso) di komputer Anda.
Saat Anda run(me-mount gambar Anda sebagai drive virtual), drive virtual dibuat dengan semua konten game di drive virtual dan file instalasi game diluncurkan secara otomatis. [Menjalankan gambar buruh pelabuhan Anda - membuat wadah dan kemudian memulainya.]
Tetapi ketika Anda stop(mirip dengan buruh pelabuhan berhenti) itu, drive virtual masih ada tetapi menghentikan semua proses. [Seperti wadah ada sampai tidak dihapus]
Dan ketika Anda melakukannya start(mirip dengan docker start), dari drive virtual file game memulai eksekusi. [memulai wadah yang ada]
Dalam contoh ini - Gambar permainan adalah gambar Docker Anda dan drive virtual adalah wadah Anda.
Ini tidak sepenuhnya benar. Menurut dokumen resmi, "...docker run is equivalent to the API /containers/create then /containers/(id)/start.(sumber: docs.docker.com/engine/reference/commandline/run )
sshh
2
runperintah menciptakan sebuah wadah dari gambar dan kemudian memulai proses root pada wadah ini. Menjalankannya dengan run --rmbendera akan menyelamatkan Anda dari kesulitan mengeluarkan wadah mati yang tidak berguna sesudahnya dan akan memungkinkan Anda untuk mengabaikan keberadaandocker start dan docker removesekaligus.
run perintah melakukan beberapa hal berbeda:
docker run --name dname image_name bash -c "whoami"
Membuat Kontainer dari gambar. Pada titik ini wadah akan memiliki id, mungkin memiliki nama jika diberikan, akan muncul didocker ps
Mulai / jalankan proses root wadah. Dalam kode di atas itu akan dijalankanbash -c "whoami" . Jika seseorang berjalan docker run --name dname image_nametanpa perintah untuk menjalankan kontainer akan langsung berhenti.
Setelah proses root selesai, wadah dihentikan. Pada titik ini, ini cukup berguna. Seseorang tidak dapat melakukan apa-apa lagi atau menghidupkan kembali wadah. Pada dasarnya ada 2 cara keluar dari keadaan berhenti: menghapus wadah atau membuat pos pemeriksaan (yaitu gambar) dari wadah berhenti untuk menjalankan sesuatu yang lain. Kita harus menjalankan docker removesebelum meluncurkan wadah dengan nama yang sama.
Bagaimana cara menghapus wadah setelah dihentikan secara otomatis? Tambahkan--rmbendera kerunperintah:
docker run --rm --name dname image_name bash -c "whoami"
Bagaimana cara menjalankan banyak perintah dalam satu wadah? Dengan mencegah proses root dari sekarat. Ini dapat dilakukan dengan menjalankan beberapa perintah yang tidak berguna di mulai dengan--detachedflag dan kemudian menggunakan "eksekusi" untuk menjalankan perintah yang sebenarnya:
Mengapa kita membutuhkannya docker stop? Untuk menghentikan wadah yang tersisa yang kami luncurkan di cuplikan sebelumnya dengan perintah tanpa akhirtail -f /dev/null.
execute
?Jawaban:
Ini adalah pertanyaan yang sangat penting dan jawabannya sangat sederhana, tetapi mendasar:
docker run IMAGE_ID
dan tidakdocker run CONTAINER_ID
docker stop CONTAINER_ID
, Anda dapat meluncurkan kembali wadah yang sama dengan perintahdocker start CONTAINER_ID
, dan data dan pengaturan akan sama.sumber
docker rm container_id
). Di sisi lain, volume data selamat dari penghapusan wadah kecuali jika-v
opsi secara eksplisit diberikan pada baris perintah. Lokasi volume pada sistem host dapat diperiksa secara langsung. Lihat artikel ini&
di akhirrun
baris perintah? Saya membutuhkannya sebagai layanan (24 jam) yang tak terhitung jumlahnyarun
menjalankan gambarstart
memulai sebuah wadah .The
docker run
doc tidak menyebutkan:Anda tidak menjalankan kontainer yang sudah ada, Anda perlu buruh pelabuhan (karena buruh pelabuhan 1.3) .
Anda dapat memulai kembali wadah yang sudah keluar .
sumber
-i
untukdocker run
untuk proses interaktif? Maksud saya, buruh pelabuhan membutuhkan gambar untuk menjalankan wadah.Penjelasan dengan contoh:
Anggap Anda memiliki gambar permainan (iso) di komputer Anda.
Saat Anda
run
(me-mount gambar Anda sebagai drive virtual), drive virtual dibuat dengan semua konten game di drive virtual dan file instalasi game diluncurkan secara otomatis. [Menjalankan gambar buruh pelabuhan Anda - membuat wadah dan kemudian memulainya.]Tetapi ketika Anda
stop
(mirip dengan buruh pelabuhan berhenti) itu, drive virtual masih ada tetapi menghentikan semua proses. [Seperti wadah ada sampai tidak dihapus]Dan ketika Anda melakukannya
start
(mirip dengan docker start), dari drive virtual file game memulai eksekusi. [memulai wadah yang ada]Dalam contoh ini - Gambar permainan adalah gambar Docker Anda dan drive virtual adalah wadah Anda.
sumber
Jawaban daniele3004 sudah cukup bagus.
Hanya formula cepat dan kotor untuk orang-orang seperti saya yang campur aduk
run
danstart
dari waktu ke waktu:docker run [...]
=docker pull [...]
+docker start [...]
sumber
"...docker run is equivalent to the API /containers/create then /containers/(id)/start.
(sumber: docs.docker.com/engine/reference/commandline/run )run
perintah menciptakan sebuah wadah dari gambar dan kemudian memulai proses root pada wadah ini. Menjalankannya denganrun --rm
bendera akan menyelamatkan Anda dari kesulitan mengeluarkan wadah mati yang tidak berguna sesudahnya dan akan memungkinkan Anda untuk mengabaikan keberadaandocker start
dandocker remove
sekaligus.run
perintah melakukan beberapa hal berbeda:docker ps
bash -c "whoami"
. Jika seseorang berjalandocker run --name dname image_name
tanpa perintah untuk menjalankan kontainer akan langsung berhenti.docker remove
sebelum meluncurkan wadah dengan nama yang sama.Bagaimana cara menghapus wadah setelah dihentikan secara otomatis? Tambahkan
--rm
bendera kerun
perintah:Bagaimana cara menjalankan banyak perintah dalam satu wadah? Dengan mencegah proses root dari sekarat. Ini dapat dilakukan dengan menjalankan beberapa perintah yang tidak berguna di mulai dengan
--detached
flag dan kemudian menggunakan "eksekusi" untuk menjalankan perintah yang sebenarnya:Mengapa kita membutuhkannya
docker stop
? Untuk menghentikan wadah yang tersisa yang kami luncurkan di cuplikan sebelumnya dengan perintah tanpa akhirtail -f /dev/null
.sumber