Chcę sprawdzić obraz dokera utworzony przez kogoś innego z określonym punktem wejścia i cmd, na przykład:
ENTRYPOINT ["/usr/sbin/apache2ctl"]
CMD ["-D", "FOREGROUND"]
Obecnie robię:
docker run --interactive --tty --entrypoint=/bin/bash $IMAGE --login
Czy istnieje sposób na zastąpienie CMD, aby był pusty (więc nie muszę używać „--login”)?
-i
po$IMAGE
?Zobacz: https://docs.docker.com/engine/reference/run/#overriding-dockerfile-image-defaults
Odpowiednia część:
CMD (Domyślne polecenie lub opcje) Przywołaj opcjonalne POLECENIE w wierszu poleceń Dockera:
To polecenie jest opcjonalne, ponieważ osoba, która utworzyła OBRAZ, mogła już podać domyślną POLECENIE za pomocą pliku CMD Dockerfile. Jako operator (osoba uruchamiająca kontener z obrazu) możesz zastąpić CMD, po prostu określając nowe POLECENIE.
Jeśli obraz określa również ENTRYPOINT, wówczas CMD lub COMMAND zostają dołączone jako argumenty do ENTRYPOINT.
Tak, aby robić to, co chcesz, musisz tylko określić cmd, a zastępują użyciu
/bin/bash
. Nie do końca „pusty”, ale wykonuje zadanie w 99%.źródło
--login
do,-l
myślę, że twoje rozwiązanie jest już tak dobre, jak to możliwe.1 ? Ssl 0:00 /usr/bin/geth echo setting up db
Dla każdego, kto tu przyjdzie, aby zastąpić punkt wejścia ORAZ polecenie przekazać inne polecenie, np. Uruchom bash zamiast skryptu punktu wejścia, a następnie uruchom inne polecenie z parametrami (nie było dla mnie jasne z innych odpowiedzi):
-c 'npm link ...'
jest parametrem,/bin/sh
więc możesz przekazać dowolne polecenie, które chcesz uruchomić w kontenerze./bin/sh
jest dla obrazów alpejskich,/bin/bash
najprawdopodobniej dla innych obrazów.źródło
'...'
używaj podwójnych cudzysłowów"..."
/bin/sh
ale twój może nie być tak.