buruh pelabuhan - bagaimana Anda menonaktifkan restart otomatis pada sebuah wadah?


156

Saya dapat mengaktifkan restart otomatis --restart=always, tetapi setelah saya menghentikan wadah, bagaimana cara mematikan atribut itu?

Saya biasanya menjalankan server web dan biasanya memetakan port 80:

docker run -d --restart=always -p 80:80 -i -t myuser/myproj /bin/bash

Tetapi ada saat-saat ketika saya ingin menjalankan versi gambar saya yang lebih baru, tetapi saya ingin menyimpan wadah yang lama. Masalahnya adalah bahwa jika ada beberapa kontainer dengan --restart=always, hanya satu dari mereka (acak?) Dimulai karena mereka semua bersaing untuk port 80 pada host.

Jawaban:


326

Anda dapat menggunakan --restart=unless-stoppedopsi ini, seperti yang disebutkan @Shibashis, atau memperbarui kebijakan mulai ulang (ini membutuhkan buruh pelabuhan 1,11 atau lebih baru);

Lihat dokumentasi untukdocker update dan kebijakan restart Docker .

docker update --restart=no my-container

yang memperbarui kebijakan mulai ulang untuk wadah yang ada ( my-container)


69
Gunakan docker update --restart=no $(docker ps -a -q)untuk memperbarui semua wadah Anda :-)
Mark Mooibroek

33

Anda dapat memulai wadah Anda dengan --restart=unless-stopped.


22

Gunakan di bawah ini untuk menonaktifkan SEMUA wadah restart otomatis (daemon).

docker update --restart=no $(docker ps -a -q)

Gunakan yang berikut untuk menonaktifkan memulai ulang wadah TUNGGAL.

docker update --restart=no the-container-you-want-to-disable-restart

Rasional :

Docker menyediakan kebijakan mulai ulang untuk mengontrol apakah wadah Anda mulai secara otomatis ketika mereka keluar, atau ketika Docker memulai kembali. Ini sering sangat berguna ketika Docker menjalankan layanan utama.

Catatan

Jika Anda menggunakan komposisi buruh pelabuhan, ini mungkin berguna untuk diketahui.

restart no adalah kebijakan restart default, dan itu tidak memulai ulang wadah dalam keadaan apa pun. Ketika selalu ditentukan, wadah selalu restart. Kebijakan on-failure restart wadah jika kode keluar menunjukkan kesalahan on-kegagalan.

restart: "no"
restart: always
restart: on-failure
restart: unless-stopped

restart: always

12

Jika Anda memiliki segerombolan yang me-restart kontainer, segerombolan akan memulai kembali setiap kontainer yang Anda hentikan atau rm, terlepas dari opsi restart. Itu fitur, bukan bug.

Pastikan Anda tidak menjalankan layanan yang Anda lupa:

docker service ls

Kemudian, Anda dapat menghentikan layanan

docker service rm <service id discovered with previous command>

1
lsmengakibatkan kesalahanError response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
naXa
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.