Bagaimana restart kontainer buruh pelabuhan yang dihentikan

91

Saya meluncurkan kontainer buruh pelabuhan dari gambar dengan perintah berikut:

$ docker run -d myimage /bin/bash -c "mycommand"

Setelah "mycommand"selesai, kontainer dihentikan (saya kira dihentikan), tetapi tidak dihapus, karena saya dapat melihatnya dengan perintah ini:

$ docker ps -a

Apakah ada cara untuk restartpenampung ini dengan parameter yang sama dan menyimpan data yang dihasilkan mycommand?

Bob5421
sumber
Apakah "volume" atau "mount direktori host" memuaskan Anda? Seperti dokumen yang disebutkan: docs.docker.com/engine/tutorials/dockervolumes
Haoming Zhang

Jawaban:

124

Ya, ketika perintah awal menyelesaikan eksekusinya maka kontainer akan berhenti.

Anda dapat memulai penampung yang dihentikan menggunakan:

docker start container_name

Jika Anda ingin melihat output dari perintah Anda, maka Anda harus menambahkan -aiopsi:

docker start -ai container_name

PS. ada docker restart container_nametapi yang digunakan untuk memulai kembali wadah yang sedang berjalan - Saya yakin itu bukan kasus Anda.

lmtx
sumber
1
Penampung saya berhenti segera setelah memulai, setiap kali. Tidak yakin apa gunanya itu. Menggunakan perintah -ai memberikan respons ini: Tidak dapat membuka file persyaratan: [Errno 2] Tidak ada file atau direktori seperti itu: 'requirement.txt'
geoidesic
@geoidesic dapatkah Anda memberikan detail lebih lanjut? Apa jenis file 'Requirement.txt' yang Anda bicarakan?
lmtx
1
@geoidesic, Untuk memecahkan masalah ini, saya mengubah entrypoint untuk menjalankan perintah sleep 900 yang memungkinkan saya untuk kemudian terhubung ke container dan menjalankan perintah di dalamnya menggunakan docker exec -it container_name bash. Ketika saya menjalankan perintah dari dalam wadah, saya dapat melihat mengapa implementasi awal skrip saya gagal dan saya memperbaikinya.
PatS
@PatS dapat Anda silahkan berbagi bagaimana Anda dikombinasikan startdengan sleep? Saya tidak bisa mencapai titik di mana saya bisa berlariexec
3pitt
11

Pertama, $ docker ps -atampilkan semua penampung (yang berjalan dan yang dihentikan), jadi itulah alasan Anda tidak melihat penampung yang dihentikan terdaftar.

Kedua, Anda dapat dengan mudah memulai penampung yang berhenti berjalan:

$ docker start container_name

Setelah penampung dimulai, Anda dapat menjalankan perintah Anda dengan:

$ docker exec -it container_name bash -c "mycommand"

Barang-barang yang Anda buat di penampung Anda akan tetap berada di dalam penampung Anda selama masih ada. Jika Anda ingin menyimpan data meskipun wadah Anda dihapus, Anda dapat menggunakan volume .

lmiguelvargasf
sumber
1

Harus

$ docker restart container_id # OR
$ docker restart container_name
Doan Vu
sumber
jawaban yang diterima menunjukkan restartuntuk wadah yang sudah berjalan
3pitt