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.

Brad Grissom
sumber

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)

thaJeztah
sumber
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.

Shibashi
sumber
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
FlyingV
sumber
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>
nachbar
sumber
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