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?


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.


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 .


1

Harus

$ docker restart container_id # OR
$ docker restart container_name

jawaban yang diterima menunjukkan restartuntuk wadah yang sudah berjalan
3pitt
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.