Führen Sie ein Docker-Image als Container aus


604

Ich habe ein Docker-Image aus einer Docker-Datei erstellt. Ich sehe, dass das Image erfolgreich erstellt wurde, aber was mache ich damit? Sollte es nicht als Container ausgeführt werden können?

Antworten:


855

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 .


4
Die menschenfreundlichen Namen, die unter 'NAME' in abgedruckt sind, sind docker ps -ahier also nicht nützlich?
ThorSummoner

11
docker pslistet 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_)
Andy

8
@Andy Warum verwenden wir am Ende / bin / bash? Ich bin auch neu
Raheel

6
@RaheelKhan Weil Ihr Docker-Image etwas zum Ausführen benötigt. Sie können dies durch ein Programm ersetzen, das Sie installiert haben. / bin / bash ist nur eine praktische Shell, die bereits installiert ist.
Ryan Shillington

Wenn Sie eine Umgebungsvariable hinzufügen müssen, können Sie Docker ausführen -i -t -e ROOT_PASSWORD = root ubuntu: 12.04
Balaji Radhakrishnan

70

Führen Sie die folgenden Schritte aus:

  1. $ docker images

    Sie erhalten eine Liste aller lokalen Docker-Images mit den angegebenen Tags.

  2. $ 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_namekönnen Sie auch eine Bild-ID (kein Tag-Name) angeben.


35
  • 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
    

21

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 psgibt 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_idund stoppen docker rm container_id.

Sie können Ihren Container auch mit -rmArgumenten ausführen. Wenn Sie Ihren Container stoppen, wird er automatisch entfernt.


1
Die Option --rm (Hinweis: 2 Striche nicht einzeln) ist Gold !!!, mein System ist mit gestoppten (toten) Containern übersät.
Johan Snowgoose

13

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 .


5

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/webdavals 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

Re „betreiben einen webdev Service“ : Meinen Sie „einen WebDAV - Dienst ausführen“ ? Oder "einen Webentwicklungsdienst betreiben" ?
Peter Mortensen

5

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

4

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 imagesBefehl 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.


2

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

0
$ 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*

1
Eine Erklärung wäre angebracht.
Peter Mortensen

-1

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

Referenz: https://gist.github.com/mitchwongho/11266726

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.