Docker-Image-Verwendung
Wenn beim Ausführen eines Containers das verwendete Image lokal nicht vorhanden ist, lädt Docker es automatisch aus dem Docker-Image-Repository herunter. Standardmäßig wird es aus der öffentlichen Image-Quelle Docker Hub heruntergeladen.
Jetzt lernen wir:
- 1. Verwalten und Verwenden lokaler Docker-Host-Images
- 2. Image erstellen
Images auflisten
Wir könnendocker imagesverwenden, um Images auf dem lokalen Host aufzulisten.
example@example:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 90d5884b1ee0 5 days ago 188 MB php 5.6 f40e9e0f10c8 9 days ago 444.8 MB nginx latest 6f8d099c3adc 12 days ago 182.7 MB mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB ubuntu 15.10 4e3b13c8a266 4 weeks ago 136.3 MB hello-world latest 690ed74de00f 6 months ago 960 B training/webapp latest 6fae60ef3446 11 months ago 348.8 MB
Beschreibung der einzelnen Optionen:
-
REPOSITORY:Gibt die Repository-Quelle des Images an.
-
TAG:Image-Tags
-
IMAGE ID:Image-ID
-
CREATED:Erstellungszeit des Images
-
SIZE:Image-Größe
Dieselbe Repository-Quelle kann mehrere TAGs haben, die verschiedene Versionen der Repository-Quelle darstellen. Zum Beispiel gibt es in der ubuntu-Repository-Quelle mehrere Versionen wie 15.10, 14.04 usw. Wir verwenden REPOSITORY:TAG, um verschiedene Images zu definieren.
Wenn wir also das Ubuntu-System-Image Version 15.10 verwenden möchten, um einen Container auszuführen, lautet der Befehl wie folgt:
example@example:~$ docker run -t -i ubuntu:15.10 /bin/bash root@d77ccb2e5cca:/#
Parameter description:
- -i: Interaktiver Betrieb.
- -t: Terminal.
- ubuntu:15.10Dies bezieht sich auf das Starten eines Containers mit dem ubuntu 15.10 Image als Basis.
- /bin/bashNach dem Image-Namen kommt der Befehl. Hier wollen wir eine interaktive Shell, also verwenden wir /bin/bash.
Wenn wir das Ubuntu-System-Image Version 14.04 verwenden möchten, um einen Container auszuführen, lautet der Befehl wie folgt:
example@example:~$ docker run -t -i ubuntu:14.04 /bin/bash root@39e968165990:/#
Wenn Sie kein Versions-Tag für ein Image angeben, z. B. wenn Sie nur ubuntu verwenden, verwendet Docker standardmäßig das Image ubuntu:latest.
Ein neues Image erhalten
Wenn wir ein Image verwenden, das auf dem lokalen Host nicht vorhanden ist, lädt Docker das Image automatisch herunter. Wenn wir das Image im Voraus herunterladen möchten, können wir den Befehl docker pull verwenden, um es herunterzuladen.
Cexample@example:~$ docker pull ubuntu:13.10 13.10: Pulling from library/ubuntu 6599cadaf950: Pull complete 23eda618d451: Pull complete f0be3084efe9: Pull complete 52de432f084b: Pull complete a3ed95caeb02: Pull complete Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3 Status: Downloaded newer image for ubuntu:13.10
Nach Abschluss des Downloads können wir dieses Image direkt verwenden, um einen Container auszuführen.
Images finden
Wir können auf der Docker Hub-Website nach Images suchen. Die Docker Hub-URL lautet:https://hub.docker.com/
Wir können auch den Befehl docker search verwenden, um nach Images zu suchen. Wenn wir beispielsweise ein httpd-Image als unseren Webdienst benötigen, können wir mit dem Befehl docker search nach httpd suchen, um ein geeignetes Image zu finden.
example@example:~$ docker search httpd
Klicken Sie auf das Bild, um die größere Version anzuzeigen:
NAME: Der Name der Image-Repository-Quelle
BESCHREIBUNG: Beschreibung des Images
OFFIZIELL: Gibt an, ob es offiziell von Docker veröffentlicht wurde
Sterne: Ähnlich wie der Stern bei GitHub; es bedeutet Zustimmung oder Gefallen.
AUTOMATISIERT: Automatischer Build.
Image pullen
Wir haben uns entschieden, das offizielle httpd-Image zu verwenden, das in der obigen Abbildung gezeigt wird, und den Befehl docker pull zu verwenden, um das Image herunterzuladen.
example@example:~$ docker pull httpd Using default tag: latest latest: Pulling from library/httpd 8b87079b7a06: Pulling fs layer a3ed95caeb02: Download complete 0d62ec9c6a76: Download complete a329d50397b9: Download complete ea7c1f032b5c: Waiting be44112b72c7: Waiting
Nachdem der Download abgeschlossen ist, können wir dieses Image verwenden.
example@example:~$ docker run httpd
Image löschen
Um ein Image zu löschen, verwenden Sie den Befehldocker rmi, zum Beispiel, um das hello-world-Image zu löschen:
$ docker rmi hello-world

Image erstellen
Wenn das Image, das wir aus dem Docker-Image-Repository heruntergeladen haben, unseren Anforderungen nicht entspricht, können wir das Image auf die folgenden zwei Arten ändern.
- 1. Ein Image aus einem bereits erstellten Container aktualisieren und dieses Image committen.
- 2. Dockerfile-Anweisungen verwenden, um ein neues Image zu erstellen
Image aktualisieren
Bevor wir das Image aktualisieren, müssen wir mithilfe des Images einen Container erstellen.
example@example:~$ docker run -t -i ubuntu:15.10 /bin/bash
Nach dem Betreten des Containers das System aktualisieren:
apt-get update apt-get upgrade -y
Nach Abschluss des Vorgangs geben Sie den Befehl exit ein, um diesen Container zu verlassen.
exit
An diesem Punkt ist der Container mit der ID e218edb10161 der nach unseren Anforderungen geänderte Container. Wir können den Befehl docker commit verwenden, um eine Kopie des Containers zu übermitteln.
example@example:~$ docker commit -m="has update" -a="example" e218edb10161 example/ubuntu:v2 sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
Beschreibung der einzelnen Parameter:
-
-m:Beschreibungsinformationen für den Commit
-
-a:Den Image-Autor angeben
-
e218edb10161:Container-ID
-
example/ubuntu:v2:Geben Sie den Namen des zu erstellenden Ziel-Images an.
Wir können den Befehldocker imagesverwenden, um unser neues Image anzuzeigen.example/ubuntu:v2:
example@example:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE example/ubuntu v2 70bf1840fd7c 15 seconds ago 158.5 MB ubuntu 14.04 90d5884b1ee0 5 days ago 188 MB php 5.6 f40e9e0f10c8 9 days ago 444.8 MB nginx latest 6f8d099c3adc 12 days ago 182.7 MB mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB ubuntu 15.10 4e3b13c8a266 4 weeks ago 136.3 MB hello-world latest 690ed74de00f 6 months ago 960 B training/webapp latest 6fae60ef3446 12 months ago 348.8 MB
Verwenden Sie unser neues Image.example/ubuntu, um einen Container zu starten
example@example:~$ docker run -t -i example/ubuntu:v2 /bin/bash root@1a9fbdeb5da3:/#
Image erstellen
Wir verwenden den Befehldocker build, um ein neues Image von Grund auf zu erstellen. Dazu müssen wir eine Dockerfile-Datei erstellen, die eine Reihe von Anweisungen enthält, die Docker mitteilen, wie unser Image erstellt werden soll.
example@example:~$ cat Dockerfile FROM centos:6.7 MAINTAINER Fisher "[email protected]" RUN /bin/echo 'root:123456' |chpasswd RUN useradd example RUN /bin/echo 'example:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D
Jede Anweisung erstellt eine neue Ebene auf dem Image, und das Präfix jeder Anweisung muss großgeschrieben werden.
Die erste Anweisung, FROM, gibt an, welche Image-Quelle verwendet werden soll.
Die RUN-Anweisung weist Docker an, Befehle innerhalb des Images auszuführen, wie z. B. was installiert werden soll...
Dann verwenden wir die Dockerfile-Datei und den Befehl docker build, um ein Image zu erstellen.
example@example:~$ docker build -t example/centos:6.7 . Sending build context to Docker daemon 17.92 kB Step 1 : FROM centos:6.7 ---> d95b5ca17cc3 Step 2 : MAINTAINER Fisher "[email protected]" ---> Using cache ---> 0c92299c6f03 Step 3 : RUN /bin/echo 'root:123456' |chpasswd ---> Using cache ---> 0397ce2fbd0a Step 4 : RUN useradd example ......
Parameter description:
-
-t: Geben Sie den Namen des zu erstellenden Ziel-Images an.
-
.: Das Verzeichnis, in dem sich die Dockerfile-Datei befindet. Sie können den absoluten Pfad der Dockerfile-Datei angeben.
Verwenden Sie docker images, um zu sehen, dass das erstellte Image bereits in der Liste mit der Image-ID 860c279d2fec vorhanden ist.
example@example:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE example/centos 6.7 860c279d2fec About a minute ago 190.6 MB example/ubuntu v2 70bf1840fd7c 17 hours ago 158.5 MB ubuntu 14.04 90d5884b1ee0 6 days ago 188 MB php 5.6 f40e9e0f10c8 10 days ago 444.8 MB nginx latest 6f8d099c3adc 12 days ago 182.7 MB mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB ubuntu 15.10 4e3b13c8a266 5 weeks ago 136.3 MB hello-world latest 690ed74de00f 6 months ago 960 B centos 6.7 d95b5ca17cc3 6 months ago 190.6 MB training/webapp latest 6fae60ef3446 12 months ago 348.8 MB
Wir können das neue Image verwenden, um einen Container zu erstellen.
example@example:~$ docker run -t -i example/centos:6.7 /bin/bash [root@41c28d18b5fb /]# id example uid=500(example) gid=500(example) groups=500(example)
Aus dem Obigen können wir ersehen, dass das neue Image bereits den von uns erstellten Benutzer example enthält.
Image-Tag festlegen
Wir können den Befehl docker tag verwenden, um dem Image einen neuen Tag hinzuzufügen.
example@example:~$ docker tag 860c279d2fec example/centos:dev
docker tag Image-ID, hier 860c279d2fec, Benutzername, Repository-Name und neuer Tag-Name.
Mit dem Befehl docker images können wir sehen, dass das Image mit der ID 860c279d2fec ein zusätzliches Tag hat.
example@example:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE example/centos 6.7 860c279d2fec 5 hours ago 190.6 MB example/centos dev 860c279d2fec 5 hours ago 190.6 MB example/ubuntu v2 70bf1840fd7c 22 hours ago 158.5 MB ubuntu 14.04 90d5884b1ee0 6 days ago 188 MB php 5.6 f40e9e0f10c8 10 days ago 444.8 MB nginx latest 6f8d099c3adc 13 days ago 182.7 MB mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB ubuntu 15.10 4e3b13c8a266 5 weeks ago 136.3 MB hello-world latest 690ed74de00f 6 months ago 960 B centos 6.7 d95b5ca17cc3 6 months ago 190.6 MB training/webapp latest 6fae60ef3446 12 months ago 348.8 MBWeitere Erweiterungen
