Antworten:
Die Art der Ausführung hängt davon ab, ob Sie dem Bild ein Tag / einen Namen gegeben haben oder nicht.
$ docker images
REPOSITORY TAG ID CREATED SIZE
ubuntu 12.04 8dbd9e392a96 4 months ago 131.5 MB (virtual 131.5 MB)
Mit einem Namen (verwenden wir Ubuntu ):
$ docker run -i -t ubuntu:12.04 /bin/bash
Ohne Namen, nur mit der ID:
$ docker run -i -t 8dbd9e392a96 /bin/bash
Weitere Informationen finden Sie in der Docker-Laufreferenz .
docker ps
listet Container auf, keine Bilder. Wenn Sie ein Bild aus einem Container erstellen möchten, müssen Sie docker commit
. Sie können die Verwendung Namen in der Commit (zB docker commit _NAME_ _imagename_
)
Führen Sie die folgenden Schritte aus:
$ docker images
Sie erhalten eine Liste aller lokalen Docker-Images mit den angegebenen Tags.
$ docker run image_name:tag_name
Wenn Sie nicht angegeben haben tag_name
haben, wird automatisch ein Bild mit dem Tag "Neueste" ausgeführt.
Stattdessen image_name
können Sie auch eine Bild-ID (kein Tag-Name) angeben.
So listen Sie die Docker-Bilder auf
$ docker images
Wenn Ihre Anwendung mit Port 80 ausgeführt werden soll und Sie einen anderen Port für die lokale Bindung verfügbar machen können, sagen Sie 8080:
$ docker run -d --restart=always -p 8080:80 image_name:version
Sie können Ihre verfügbaren Bilder anzeigen mit:
docker images
Anschließend können Sie im getrennten Modus ausgeführt werden, sodass Ihr Terminal weiterhin verwendet werden kann. Sie haben mehrere Möglichkeiten, es mit einem Repository-Namen (mit oder ohne Tag) oder einer Image-ID auszuführen:
docker run -d repository
docker run -d repository:tag
docker run -d image_id
Dann können Sie überprüfen, ob Ihr Container mit ausgeführt wird
docker ps
docker ps
gibt Ihnen eine Container-ID. Sie können es oder nur die 2/3 ersten Zeichen verwenden, um in Ihren Container zu gelangen, indem Sie:
docker exec -it container_id /bin/bash
Und Sie können es mit docker stop container_id
und stoppen docker rm container_id
.
Sie können Ihren Container auch mit -rm
Argumenten ausführen. Wenn Sie Ihren Container stoppen, wird er automatisch entfernt.
Rufen Sie mit diesem Befehl den Namen oder die ID des Images ab, das Sie ausführen möchten:
docker images
Der Docker-Ausführungsbefehl wird folgendermaßen verwendet:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Im Folgenden habe ich die Optionen für Versand, Name, Veröffentlichung, Volume und Neustart angegeben, bevor ich den Bildnamen oder die ID angegeben habe:
docker run -d --name container-name -p localhost:80:80 -v $HOME/myContainer/configDir:/myImage/configDir --restart=always image-name
Wo:
--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
Weitere Informationen finden Sie in der offiziellen Docker-Laufreferenz .
Hier ist ein Beispiel zum Ausführen eines Webdev-Dienstes in Docker. Das Bild heißt morrisjobke / webdav . Sie können es vom Docker Hub abrufen .
Nachdem Sie diese Images ausgeführt haben, können Sie unter auf die WebDAV- Instanz zugreifen http://localhost:8888/webdav
. Intern wird der Ordner /var/webdav
als WebDAV-Stamm verwendet.
Sie können diesen Container folgendermaßen ausführen:
$ docker run -d -e USERNAME=test -e PASSWORD=test -p 8888:80 morrisjobke/webdav
Ich hatte das gleiche Problem. Ich habe mein Docker-Image ausgeführt und einen Container mit einer bestimmten CONTAINER_ID erstellt. Ich wollte mit demselben Container arbeiten:
Führen Sie zuerst Ihr Docker-Image aus:
docker run -it -p 8888:8888 -p 6006:6006 -v ~/:/host waleedka/modern-deep-learning
Listen Sie dann alle Container auf, die Sie erstellt haben:
sudo docker ps -a
Und wählen Sie den Container aus, mit dem Sie arbeiten möchten (meiner ist 167ddd6d7f15):
sudo docker start -ai 167ddd6d7f15
Da Sie ein Image aus der Docker-Datei erstellt haben, befindet sich das Image derzeit nicht im aktiven Zustand. Um zu arbeiten, müssen Sie dieses Image in einem Container ausführen.
Der $ docker images
Befehl beschreibt, wie viele Bilder derzeit im lokalen Repository verfügbar sind. und
docker ps -a
Zeigt an, wie viele Container derzeit verfügbar sind, dh die Liste der aktiven und verlassenen Container.
Es gibt zwei Möglichkeiten, das Image im Container auszuführen:
$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
Im getrennten Modus:
-d=false: Detached mode: Run container in the background, print new container id
Im interaktiven Modus:
-i :Keep STDIN open even if not attached
Hier ist der Docker-Ausführungsbefehl
$ docker run image_name:tag_name
Weitere Informationen zum Docker-Lauf finden Sie unter Docker-Laufreferenz .
Es ist das beste Material, um Docker zu verstehen.
Führen Sie Folgendes aus, um eine Liste aller Bilder auf Ihrem Docker-Host anzuzeigen:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
apache_snapshot latest 13037686eac3 22 seconds ago 249MB
ubuntu latest 00fd29ccc6f1 3 weeks ago 111MB
Jetzt können Sie das Docker-Image als Container im interaktiven Modus ausführen:
$ docker run -it apache_snapshot /bin/bash
ODER wenn Sie lokal keine Bilder haben, suchen Sie in Docker Hub nach einem Bild zum Herunterladen:
$ 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]
Ziehen Sie das Docker-Image mit dem Docker-Pull-Befehl aus einem Repository:
$ docker pull ubuntu
Führen Sie das Docker-Image als Container aus:
$ 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*
Für diejenigen, die das gleiche Problem hatten, aber auf einen Fehler wie stießen
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"
Ich habe einen Einstiegspunkt hinzugefügt, der für mich gearbeitet hat:
docker run -it --entrypoint /bin/sh
für die Bilder ohne Bash.
Beispiel (aus dem genehmigten Beispiel):
run -it --entrypoint /bin/sh ubuntu:12.04
docker ps -a
hier also nicht nützlich?