Come posso ignorare la CMD quando esegue un'image docker?

Voglio controllare un'image docker creata da qualcun altro con un punto di ingresso e cmd specificato, ad esempio:

ENTRYPOINT ["/usr/sbin/apache2ctl"] CMD ["-D", "FOREGROUND"] 

Attualmente faccio:

  • Docker non esegue l'aggiunta di argomenti all'entrata dell'image
  • Ottenga l'esecuzione di un contenitore docker sullo stesso tipo di sistema operativo?
  • Più comandi nella direttiva CMD Docker
  • Come ridurre le size dell'image di Docker
  • Perché non posso cd in una directory con docker eseguito?
  • Come scegliere l'indirizzo IP esterno di un bilanciatore di carico Kubernetes in Google Container Engine
  •  docker run --interactive --tty --entrypoint=/bin/bash $IMAGE --login 

    C'è un modo per superare CMD per essere vuoto (quindi non devo usare "–login")?

  • Docker VM su OS X installato ma i comandi sembrano fallire
  • docker-machine su un host "generico" esistente?
  • Docker non esegue l'aggiunta di argomenti all'entrata dell'image
  • Esegui un'applicazione mpi nel docker
  • Più comandi nella direttiva CMD Docker
  • Perché non posso cd in una directory con docker eseguito?
  • 3 Solutions collect form web for “Come posso ignorare la CMD quando esegue un'image docker?”

    Potresti semplicemente entrare tramite il docker run -it --entrypoint=/bin/bash $IMAGE -i ( docker run -it --entrypoint=/bin/bash $IMAGE -i il contenitore e otterrai una shell bash in modalità intertriggers), quindi fai il command entrypoint in quel contenitore.

    È quindi ansible controllare il contenitore in esecuzione nello stato in cui dovrebbe essere eseguito.

    EDIT: Dal Docker 1.3 è ansible utilizzare exec per eseguire un process in un contenitore in esecuzione. Avviare il contenitore come si fa normalmente e quindi inserirlo emettendo:

    docker exec -it $CONTAINER_ID /bin/bash

    Supponendo che bash sia installato, ti verrà concesso l'accesso alla shell al contenitore in esecuzione.

    Vedi: https://docs.docker.com/engine/reference/run/#overriding-dockerfile-image-defaults

    Porzione rilevante:

    CMD (Comando o opzioni predefiniti) Ricall il command COMANDO opzionale nella row di command Docker:

     $ docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...] 

    Questo command è facoltativo perché la persona che ha creato l'IMAGE può avere già fornito un COMANDO predefinito utilizzando il Dockerfile CMD. Poiché l'operatore (la persona che gestisce un contenitore dall'image), è ansible ignorare tale CMD solo specificando un nuovo command.

    Se l'image specifica anche un ENTRYPOINT allora il CMD o il COMMAND vengono aggiunti come argomenti all'ENTIMENTO.

    Quindi per fare ciò che si desidera è necessario specificare un cmd e sovrascrivere usando /bin/bash . Non abbastanza "vuoto", ma ha il lavoro fatto 99%.

    Per chiunque venga qui per ignorare il command entrypoint AND per passare un altro command, ad esempio eseguire bash invece di script di entrypoint e quindi eseguire un altro command con i parametri (non era chiaro da altre risposte):

      docker run [other options] --entrypoint '/bin/sh' $IMAGE -c 'npm link gulp gulp-sass gulp-sourcemaps' 

    -c 'npm link ...' è il parametro per /bin/sh modo da poter passare qualsiasi command che si desidera eseguire nel contenitore. /bin/sh è per immagini alpine, /bin/bash più probabile per altre immagini.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.