Docker kapsayıcısı normal bir şekilde çıktığında ve Dockerfile'ı düzenleyebileceğinizde bir çözüm.
Genellikle bir docker container çalıştırıldığında, bir uygulama bir komut çalıştırılarak sunulur. Gönderen Dockerfile referans ,
Hem CMD hem de ENTRYPOINT talimatları, bir konteyner çalıştırılırken hangi komutun yürütüleceğini tanımlar. ... Dockerfile, CMD veya ENTRYPOINT komutlarından en az birini belirtmelidir.
Bir görüntü oluşturduğunuzda ve CMD veya ENTRYPOINT ile herhangi bir komut belirtmediğinizde, temel görüntünün CMD veya ENTRYPOINT komutu yürütülür.
Örneğin, Resmi Ubuntu Dockerfile'da CMD ["/bin/bash"]
( https://hub.docker.com/_/ubuntu ) vardır. Şimdi, bin/bash/
komut girişi kabul edebilir ve docker run -it IMAGE_ID
komut STDIN'i kaba ekler. Sonuç, etkileşimli bir terminal elde edersiniz ve konteyner çalışmaya devam eder.
Dockerfile'da CMD veya ENTRYPOINT ile bir komut belirtildiğinde, bu komut konteyner çalıştırılırken yürütülür. Şimdi, bu komut herhangi bir giriş gerektirmeden bitirebilirse, bitecek ve konteyner çıkacaktır. docker run -it IMAGE_ID
olacak DEĞİL bu durumda interaktif terminali sağlamaktadır. Bir örnek, aşağıdaki Dockerfile'dan oluşturulan docker görüntüsü olabilir.
FROM ubuntu
ENTRYPOINT echo hello
Bu görüntünün terminaline gitmeniz gerekiyorsa, giriş noktası komutunu değiştirerek kabı çalışır durumda tutmanız gerekecektir.
FROM ubuntu
ENTRYPOINT echo hello && sleep infinity
Konteyneri normal olarak çalıştırdıktan sonra docker run IMAGE_ID
, başka bir terminale gidip docker exec -it CONTAINER_ID bash
konteynırın terminalini almak için kullanabilirsiniz .