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 MB
Weitere Erweiterungen