docker - bir kapsayıcıda otomatik yeniden başlatmayı nasıl devre dışı bırakırsınız?


156

İle otomatik yeniden başlatmayı etkinleştirebilirim --restart=always, ancak kapsayıcıyı durdurduktan sonra bu özelliği nasıl kapatabilirim?

Normalde bir web sunucusu çalıştırıyorum ve genellikle bağlantı noktası 80'i eşleştiriyorum:

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

Ancak resmimin daha yeni bir sürümünü çalıştırmak istediğim zamanlar var, ancak eski kapsayıcıyı tutmak istiyorum. Sorun şu ki, birden fazla kap varsa --restart=always, bunlardan yalnızca biri (rasgele?) Başlar, çünkü bunların tümü ana bilgisayardaki bağlantı noktası 80'i gerektirir.

Yanıtlar:


327

Kullanabilirsiniz --restart=unless-stopped@Shibashis'in belirttiği gibi seçeneği veya yeniden başlatma politikasını güncelleyebilirsiniz (bu, docker 1.11 veya daha yenisini gerektirir);

Bkz belgelerinedocker update ve Docker yeniden başlatma politikaları .

docker update --restart=no my-container

bir kapsayıcı için yeniden başlatma ilkesini güncelleyen ( my-container)


69
docker update --restart=no $(docker ps -a -q)Tüm kaplarınızı güncellemek için kullanın :-)
Mark Mooibroek

33

Konteynerinizi ile başlatabilirsiniz --restart=unless-stopped.


22

TÜM otomatik yeniden başlatma (arka plan programı) kapsayıcılarını devre dışı bırakmak için aşağıdakileri kullanın.

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

Bir SINGLE kapsayıcısını yeniden başlatmak için aşağıdakileri kullanın.

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

Akılcı :

Docker, kapsayıcılarınızın çıktıklarında veya Docker yeniden başlatıldığında otomatik olarak başlatılıp başlatılmayacağını denetlemek için yeniden başlatma ilkeleri sağlar. Docker önemli bir hizmet çalıştırırken bu genellikle çok yararlıdır.

notlar

Docker-compose kullanıyorsanız bunu bilmek faydalı olabilir.

yeniden başlatma no, varsayılan yeniden başlatma ilkesidir ve hiçbir koşulda kapsayıcıyı yeniden başlatmaz. Her zaman belirtildiğinde, kap her zaman yeniden başlatılır. Çıkış kodu bir hata durumunda hatayı gösteriyorsa, hata durumunda ilkesi bir kapsayıcıyı yeniden başlatır.

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

restart: always

12

Kapları yeniden başlatan bir sürünüz varsa sürüsü, yeniden başlatma seçeneğinden bağımsız olarak, durdurduğunuz veya rm kullandığınız kapları yeniden başlatır. Bu bir özellik, bir hata değil.

Unutmuş olduğunuz bir hizmeti çalıştırmadığınızdan emin olun:

docker service ls

Ardından, hizmeti durdurabilirsiniz

docker service rm <service id discovered with previous command>

1
lshata sonuçlarıError 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.