Risposte:
Il modo specifico per eseguirlo dipende dal fatto che tu abbia dato o meno un tag / nome all'immagine.
$ docker images
REPOSITORY TAG ID CREATED SIZE
ubuntu 12.04 8dbd9e392a96 4 months ago 131.5 MB (virtual 131.5 MB)
Con un nome (usiamo Ubuntu ):
$ docker run -i -t ubuntu:12.04 /bin/bash
Senza un nome, basta usare l'ID:
$ docker run -i -t 8dbd9e392a96 /bin/bash
Per ulteriori informazioni, consultare il riferimento alla corsa Docker .
docker ps
elenca i contenitori, non le immagini. Se si desidera creare un'immagine da un contenitore, è necessario docker commit
. Puoi utilizzare NAME nel commit (ad es. docker commit _NAME_ _imagename_
)
Procedi come segue:
$ docker images
Otterrai un elenco di tutte le immagini Docker locali con i tag specificati.
$ docker run image_name:tag_name
Se non hai specificato tag_name
, eseguirà automaticamente un'immagine con il tag "più recente".
Invece di image_name
, puoi anche specificare un ID immagine (no tag_name).
Per elencare le immagini Docker
$ docker images
Se l'applicazione desidera eseguire con la porta 80 e puoi esporre una porta diversa da associare localmente, ad esempio 8080:
$ docker run -d --restart=always -p 8080:80 image_name:version
Puoi vedere le tue immagini disponibili usando:
docker images
Quindi è possibile eseguire in modalità staccata in modo che il terminale sia ancora utilizzabile. Sono disponibili diverse opzioni per eseguirlo utilizzando un nome di repository (con o senza tag) o un ID immagine:
docker run -d repository
docker run -d repository:tag
docker run -d image_id
Quindi è possibile verificare che il contenitore sia in esecuzione utilizzando
docker ps
docker ps
ti dà un ID contenitore. Puoi usarlo o solo i primi 2/3 caratteri per entrare nel tuo contenitore usando:
docker exec -it container_id /bin/bash
E puoi fermarlo usando docker stop container_id
e docker rm container_id
.
È inoltre possibile eseguire il contenitore con -rm
argomenti, quindi se si interrompe il contenitore verrà automaticamente rimosso.
Ottieni il nome o l'id dell'immagine che desideri eseguire, con questo comando:
docker images
Il comando Esegui Docker viene utilizzato nel modo seguente:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Di seguito ho incluso le opzioni di spedizione, nome, pubblicazione, volume e riavvio prima di specificare il nome o l'id dell'immagine:
docker run -d --name container-name -p localhost:80:80 -v $HOME/myContainer/configDir:/myImage/configDir --restart=always image-name
Dove:
--detach , -d Run container in background and print container ID
--name Assign a name to the container
--publish , -p Publish a container’s port(s) to the host
--volume , -v Bind mount a volume
--restart Restart policy to apply when a container exits
Per ulteriori informazioni, consultare il riferimento ufficiale della corsa Docker .
Ecco un esempio per eseguire un servizio webdev in Docker. Il nome dell'immagine è morrisjobke / webdav . Puoi estrarlo dall'hub Docker .
Dopo aver eseguito queste immagini, è quindi possibile accedere all'istanza WebDAV in http://localhost:8888/webdav
. Internamente la cartella /var/webdav
viene utilizzata come root WebDAV.
È possibile eseguire questo contenitore nel modo seguente:
$ docker run -d -e USERNAME=test -e PASSWORD=test -p 8888:80 morrisjobke/webdav
Ho avuto lo stesso problema. Ho eseguito la mia immagine Docker e ha creato un contenitore con un CONTAINER_ID specifico. Volevo lavorare con lo stesso contenitore:
Prima esegui l'immagine Docker:
docker run -it -p 8888:8888 -p 6006:6006 -v ~/:/host waleedka/modern-deep-learning
Quindi elenca tutti i contenitori che hai creato:
sudo docker ps -a
E seleziona il contenitore con cui vuoi lavorare (il mio è 167ddd6d7f15):
sudo docker start -ai 167ddd6d7f15
Dal momento che è stata creata un'immagine dal Dockerfile, l'immagine attualmente non è nello stato attivo. Per funzionare devi eseguire questa immagine all'interno di un contenitore.
Il $ docker images
comando descrive quante immagini sono attualmente disponibili nel repository locale. e
docker ps -a
mostra quanti contenitori sono attualmente disponibili, ovvero l'elenco dei contenitori attivi ed usciti.
Esistono due modi per eseguire l'immagine nel contenitore:
$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
In modalità staccata:
-d=false: Detached mode: Run container in the background, print new container id
In modalità interattiva:
-i :Keep STDIN open even if not attached
Ecco il comando di esecuzione Docker
$ docker run image_name:tag_name
Per ulteriori chiarimenti sulla corsa Docker, è possibile visitare il riferimento sulla corsa Docker .
È il materiale migliore per capire Docker.
Per visualizzare un elenco di tutte le immagini sull'host Docker, eseguire:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
apache_snapshot latest 13037686eac3 22 seconds ago 249MB
ubuntu latest 00fd29ccc6f1 3 weeks ago 111MB
Ora puoi eseguire l'immagine Docker come contenitore in modalità interattiva:
$ docker run -it apache_snapshot /bin/bash
OPPURE se non si dispone di immagini localmente, cercare Docker Hub per un'immagine da scaricare:
$ docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian... 6759 [OK]
dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openss... 141 [OK]
rastasheep/ubuntu-sshd Dockerized SSH ser... 114 [OK]
ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS w... 88 [OK]
ubuntu-upstart Upstart is an even... 80 [OK]
Estrarre l'immagine Docker da un repository con il comando pull docker:
$ docker pull ubuntu
Esegui l'immagine Docker come contenitore:
$ docker run -it ubuntu /bin/bash
$ docker images
REPOSITORY TAG IMAGE ID CREATED
jamesmedice/marketplace latest e78c49b5f380 2 days ago
jamesmedice/marketplace v1.0.0 *e78c49b5f380* 2 days ago
$ docker run -p 6001:8585 *e78c49b5f380*
Per coloro che hanno avuto lo stesso problema, ma hanno riscontrato un errore simile
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"bash\": executable file not found in $PATH"
Ho aggiunto un punto di ingresso che ha funzionato per me:
docker run -it --entrypoint /bin/sh
per le immagini senza Bash.
Esempio (dall'esempio approvato):
run -it --entrypoint /bin/sh ubuntu:12.04
Riferimento: https://gist.github.com/mitchwongho/11266726
docker ps -a
non sono utili qui?