Chcę ustawić konfigurację, gdy mój kontener się uruchomi, do tego używam skryptów powłoki. Ale mój kontener zakończy działanie, gdy tylko moje skrypty się zakończą, próbowałem z opcją -d flaga/odłączony, ale nigdy nie uruchomi się w trybie odłączonym.Instrukcja CMD Dockerfile wyjdzie z kontenera zaraz po uruchomieniu
Poniżej jest moje Dockerfile
FROM ubuntu:14.04
ADD shell.sh /usr/local/bin/shell.sh
RUN chmod 777 /usr/local/bin/shell.sh
CMD /usr/local/bin/shell.sh
Poniżej jest mój skrypt
#!/bin/bash
echo Hello-docker
Run bez flagi
docker run hello-docker
Będzie to print 'hello-docker' na moja konsola i wychodzi
Run z -itd flagi
docker run -itd hello-docker
i jak poniżej mojego wyjścia konsoli, tym razem również będzie wychodzenia wkrótce. :(
Różnica Widziałem to w Sekcja komend podczas uruchamiania innych obrazów dowodzić sekcja pokazuje "/ bin/bash" i będzie kontynuowane w trybie wolnostojącym.
A kiedy biegnę mój obraz w pojemniku z sekcji skrypt komenda pokaże „/ bin/sh -c/usr/Loca” i Wyjdź.
chcę uruchomić pojemnika aż nie zatrzyma go ręcznie.
EDIT:
Po dodaniu instrukcji punkt_wejścia w Dockerfile, to nie będzie wykonać mój skrypt :(
FROM ubuntu:14.04
ADD shell.sh /usr/local/bin/shell.sh
RUN chmod 777 /usr/local/bin/shell.sh
CMD /usr/local/bin/shell.sh
ENTRYPOINT /bin/bash
Zgodnie z dokumentacją Döcker here
CMD zostanie nadpisane podczas uruchamiania kontenera z alternatywnymi argumentami, więc jeśli uruchomię obraz dokowania z pewnymi argumentami, jak poniżej, nie wykonam instrukcji CMD. :(
sudo docker run -it --entrypoint=/bin/bash <imagename>
Ale to nie wykona instrukcji CMD, mój skrypt powłoki nie zostanie wykonany. :( –
To jest poprawne, nie możesz mieć obu, jedyną inną opcją jest kontynuowanie działania 'CMD' Dodałem przykład do mojej odpowiedzi – NZD
Ale chcę też wykonać mój skrypt, a ja Nie chcę tego robić ręcznie.To jest problem –