Dalam praktiknya untuk memulai wadah saya lakukan:
docker run a8asd8f9asdf0
Jika demikian, apa yang terjadi:
docker start
melakukan?
Dalam manual itu tertulis
Mulai satu atau lebih kontainer yang berhenti
execute
?
Dalam praktiknya untuk memulai wadah saya lakukan:
docker run a8asd8f9asdf0
Jika demikian, apa yang terjadi:
docker start
melakukan?
Dalam manual itu tertulis
Mulai satu atau lebih kontainer yang berhenti
execute
?
Jawaban:
Ini adalah pertanyaan yang sangat penting dan jawabannya sangat sederhana, tetapi mendasar:
docker run IMAGE_ID
dan tidak docker run CONTAINER_ID
docker stop CONTAINER_ID
, Anda dapat meluncurkan kembali wadah yang sama dengan perintah docker start CONTAINER_ID
, dan data dan pengaturan akan sama.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 akhir run
baris perintah? Saya membutuhkannya sebagai layanan (24 jam) yang tak terhitung jumlahnya
run
menjalankan gambarstart
memulai sebuah wadah .The docker run
doc tidak menyebutkan:
The
docker run
Perintah pertama menciptakan wadah lapisan ditulisi atas gambar yang ditentukan, dan kemudian mulai menggunakan perintah yang ditentukan.Artinya, buruh pelabuhan menjalankan setara dengan API
/containers/create
itu/containers/(id)/start
.
Anda tidak menjalankan kontainer yang sudah ada, Anda perlu buruh pelabuhan (karena buruh pelabuhan 1.3) .
Anda dapat memulai kembali wadah yang sudah keluar .
-i
untuk docker 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.
Jawaban daniele3004 sudah cukup bagus.
Hanya formula cepat dan kotor untuk orang-orang seperti saya yang campur aduk run
dan start
dari waktu ke waktu:
docker run [...]
= docker pull [...]
+docker start [...]
"...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 dengan run --rm
bendera akan menyelamatkan Anda dari kesulitan mengeluarkan wadah mati yang tidak berguna sesudahnya dan akan memungkinkan Anda untuk mengabaikan keberadaandocker start
dan docker remove
sekaligus.
run
perintah melakukan beberapa hal berbeda:
docker run --name dname image_name bash -c "whoami"
docker ps
bash -c "whoami"
. Jika seseorang berjalan docker 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:
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--detached
flag dan kemudian menggunakan "eksekusi" untuk menjalankan perintah yang sebenarnya:
docker run --rm -d --name dname image_name tail -f /dev/null
docker exec dname bash -c "whoami"
docker exec dname bash -c "echo 'Nnice'"
Mengapa kita membutuhkannya docker stop
? Untuk menghentikan wadah yang tersisa yang kami luncurkan di cuplikan sebelumnya dengan perintah tanpa akhirtail -f /dev/null
.