Sorun noktası nedir
Docker önceden oluşturulmuş yazılımı "sandboxed" konteyner içinde çalıştıracaktır. Bir yandan, bu yaklaşım bize kesinlikle idempotans sağlar, yazılımın ortamdan ayrılmadığını ve "davranışın" her zaman aynı olduğunu garanti ederiz.
Öte yandan, Docker önceden tanımlanmış komutlar tamamlandığında duracaktır.
Örnek - echo komutundan sonra konteyner hemen duracaktır:
docker run <image> <command> # Run command
docker ps # Check the running containers
Docker'ın bu davranışı bir hata değil, sistem kaynaklarını korumak için bir özelliktir. Ancak bazen konteyner kalıcı olarak çalışmalıdır, örneğin yazılımın "gelen" bağlantıları beklemesi gerekiyorsa.
Docker konteynerini hiç durmamaya nasıl "zorlarsınız"
Hedefinize birkaç yöntemle ulaşabilirsiniz:
Pseudo-terminal launch. Konteyneri zaman zaman çalışır durumda tutmanız gerekiyorsa bu yol iyidir. Komutunuzu -it etiketleri ile çalıştırmanız yeterlidir:
docker run -it <image> bash # Run command interpreter
<command> # Run command "inside" the container
docker ps # Check the container status
Herhangi bir komutu "döngü içinde" çalıştırın. Konteynerin durmasını önlemek için herhangi bir komutu bir döngü içinde çalıştırabilir, ardından terminal oturumunu kapatabilirsiniz:
docker run <image> bash -c <command>
Ardından konteyner durumunu kontrol edin:
docker ps
Docker'ı "detached" modunda çalıştırırsanız aynı sonucu elde edebilirsiniz. Sadece -d etiketini kullanın:
docker run <image> bash -c <command>
# Run command docker ps # Check the running containers
Sonuç
Bu makaleyi okuduktan sonra, senaryonuz bitmiş olsa bile docker konteynerini nasıl canlı tutacağınızı biliyordunuz.