Start Containers Automatically

Docker , kapsayıcılarınızın çıktıklarında otomatik olarak mı yoksa Docker yeniden başlatıldığında mı başlatılacağını denetlemek için restart policies sağlar. Docker, yeniden başlatma ilkelerini kullanmanızı ve kapsayıcıları başlatmak için işlem yöneticilerini kullanmaktan kaçınmanızı önerir.

Daha fazla bilgi için bakınız.

https://docs.docker.com/config/containers/start-containers-automatically/

Bir kapsayıcının yeniden başlatma ilkesini yapılandırmak için docker run - -restart  komutu kullanırken bayrağı kullanabilirsiniz. - - restart bayrağın aşağıdakilerden herhangi biri olabilir.

Bayrak Tanım
no Kapsayıcıyı otomatik olarak yeniden başlatmayın. (Varsayılan)
on-failure veya on-failure: 
  • Sıfır olmayan bir çıkış kodu olarak ortaya çıkan bir hata nedeniyle çıkarsa kapsayıcıyı yeniden başlatın.
  • İsteğe bağlı olarak, on-failure: (maksimum yeniden deneme sayısı) seçeneği kullanarak Docker arka plan programının kapsayıcıyı yeniden başlatma girişimi sayısını sınırlayabilirsiniz.
  • on-failure yalnızca kapsayıcı bir hatayla çıkarsa yeniden başlatma ister. Daemon yeniden başlatılırsa kapsayıcıyı yeniden başlatmaz.
always Kapsayıcı durursa daima yeniden başlatın. Manuel olarak durdurulursa yalnızca docker arka plan programı yeniden başlatıldığında veya konteynerin kendisi manuel olarak yeniden başlatıldığında yeniden başlatılır.
unless-stopped always bayrağında olduğu gibi, ancak kapsayıcı durdurulduğunda (manuel olarak veya başka şekilde), Docker arka plan programı yeniden başlatıldıktan sonra bile yeniden başlatılmaz.

Yeniden başlatma politikalarını kullanırken aşağıdakileri aklınızda bulundurun:

  • Yeniden başlatma ilkesi yalnızca kapsayıcı başarıyla başlatıldıktan sonra etkili olur. Bu durumda başarılı bir şekilde başlatmak, konteynerin en az 10 saniye boyunca açık olduğu ve Docker'ın onu izlemeye başladığı anlamına gelir. Bu, hiç başlamayan bir kabın yeniden başlatma döngüsüne girmesini önler.
  • Bir kapsayıcıyı manuel olarak durdurursanız, Docker arka plan programı yeniden başlatılana veya kapsayıcı manuel olarak yeniden başlatılana kadar yeniden başlatma ilkesi yok sayılır. Bu, yeniden başlatma döngüsünü önler.
  • Yeniden başlatma politikaları yalnızca kapsayıcılar için geçerlidir. Swarm hizmetlerine yönelik yeniden başlatma politikalarını yapılandırmak için hizmetin yeniden başlatılmasıyla ilgili bayraklara bakın .

Restart Policy Kullanımı

Aşağıdaki komut bir Redis kapsayıcısını başlatır ve kapsayıcı açıkça durdurulmadığı veya arka plan programı yeniden başlatılmadığı sürece onu her zaman yeniden başlayacak şekilde yapılandırır.

docker run -d --restart unless-stopped redis

Aşağıdaki komut, halihazırda çalışan bir kapsayıcının yeniden başlatma ilkesini değiştirir.

docker update --restart unless-stopped redis

Aşağıdaki komut, çalışan tüm kapsayıcıların yeniden başlatma ilkesini değiştirir.

docker update --restart unless-stopped $(docker ps -q)

Show Containers Restart Policy 

Çalışan bir konteynerin yeniden başlatma politikasını aşağıdaki komut satırını kullanarak görebilirsiniz.

docker inspect --format '{{.HostConfig.RestartPolicy.Name}}' <container_name/id>

Bütün çalışan konteynerin yeniden başlatma politikasını id numarası ile birlikte görmek için aşağıdaki komut satırını kullanarak görebilirsiniz.

docker ps|grep -v CON|awk '{print $1}'|while read line; do  docker inspect -f "{{ .HostConfig.RestartPolicy.Name }}" $line |xargs echo $line ;done

Bütün çalışan konteynerin yeniden başlatma politikasını ismi ile birlikte görmek için aşağıdaki komut satırını kullanarak görebilirsiniz.

docker inspect --format "{{.HostConfig.RestartPolicy.Name}}, {{.Name}}" $(docker ps -qf status=running)
Blog'a Dön