English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

DockerBilderVerwendung

Wenn das Image, das beim Ausführen von Containern verwendet wird, nicht lokal vorhanden ist, lädt Docker es automatisch aus dem Docker-Image-Repository herunter, standardmäßig vom Docker Hub Public Image Repository.

Lassen Sie uns nun lernen:

  • 1、Verwaltung und Verwendung lokaler Docker-Host-Images

  • 2、Erstellung von Images

Liste der Image-Liste

We can use docker images um die Images auf dem lokalen Host aufzulisten.

w3codebox@w3codebox:~$ docker images           
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               90d5884b1ee0        5 Tage her          188 MB
php                 5.6                 f40e9e0f10c8        9 Tage her          444.8 MB
nginx               latest              6f8d099c3adc        12 Tage her         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 Wochen her         324.6 MB
httpd               latest              02ef73cf1bc0        3 Wochen her         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 Wochen her         136.3 MB
hello-world         latest              690ed74de00f        6 Monate her        960 B
training/webapp     latest              6fae60ef3446        11 Monate her       348.8 MB

Erklärung der verschiedenen Optionen:

  • REPOSITORY:Stellt den Repository-Quellcode dar

  • TAG:Label des Images

  • IMAGE ID:Image-ID

  • CREATED:Erstellungszeit des Images

  • SIZE:Größe des Images

Ein Repository kann mehrere TAGs haben, die verschiedene Versionen dieses Repositorys darstellen. Zum Beispiel im Repository ubuntu gibt es 15.10、14.04 und mehrere verschiedene Versionen zu verwenden, verwenden wir REPOSITORY:TAG, um verschiedene Images zu definieren.

Daher verwenden wir, um verschiedene Versionen wie15.10Um mit dem Ubuntu-Systemimage Container auszuführen, verwenden Sie die folgenden Befehle:

w3codebox@w3codebox:~$ docker run -t -i ubuntu:15.10 /bin/bash 
root@d77ccb2e5cca:/#

Parameterbeschreibung:

  • -i:Interaktive Operationen.

  • -t:Terminal.

  • ubuntu:15.10Dies bezieht sich auf die Verwendung von ubuntu 15.10 als Basis für den Containerstart.

  • /bin/bash:Das, was nach dem Image-Namen steht, ist ein Befehl. Hier möchten wir eine interaktive Shell, daher verwenden wir /bin/bash

Wenn Sie die Version 14.04 Um mit dem Ubuntu-Systemimage Container auszuführen, verwenden Sie die folgenden Befehle:

w3codebox@w3codebox:~$ docker run -t -i ubuntu:14.04 /bin/bash 
root@39e968165990:/#

Wenn Sie keine Versionsmarke eines Images angeben, z.B. nur ubuntu, verwendet Docker standardmäßig das Image ubuntu:latest.

获取一个新的镜像

当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。

Cw3codebox@w3codebox:~$ 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

下载完成后,我们可以直接使用这个镜像来运行容器。

查找镜像

我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为:https://hub.docker.com/

我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。

w3codebox@w3codebox:~$ docker search httpd

NAME: 镜像仓库源的名称

DESCRIPTION: 镜像的描述

OFFICIAL: 是否 docker 官方发布

stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

AUTOMATED: 自动构建。

拖取镜像

我们决定使用上图中的 httpd 官方版本的镜像,使用命令 docker pull 来下载镜像。

w3codebox@w3codebox:~$ 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

下载完成后,我们就可以使用这个镜像了。

w3codebox@w3codebox:~$ docker run httpd

Delete the image

Mirror deletion using docker rmi command, such as deleting hello-World image:

$ docker rmi hello-world

Create the image

When the image downloaded from the docker image repository does not meet our needs, we can change the image in the following two ways.

  • 1、 Update the image from the already created container and submit this image

  • 2、 Use Dockerfile instructions to create a new image

Update the image

Before updating the image, we need to use the image to create a container.

w3codebox@w3codebox:~$ docker run -t -i ubuntu:15.10 /bin/bash
root@e218edb10161:/#

to use within a running container apt-get update command to update.

After completing the operation, enter the exit command to exit this container.

At this time ID is e218edb10161 The container, is the container changed according to our needs. We can submit a container copy by using the command docker commit.

w3codebox@w3codebox:~$ docker commit -m="has update" -a="w3codebox" e218edb10161 w3codebox/ubuntu:v2
sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8

various parameter descriptions:

  • -m: submitted description information

  • -a: to specify the image author

  • e218edb10161:container ID

  • w3codebox/ubuntu:v2: to specify the target image name to be created

We can use docker images the command to view our new image w3codebox/ubuntu:v2:

w3codebox@w3codebox:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
w3codebox/ubuntu       v2                  70bf1840fd7c        15 seconds ago      158.5 MB
ubuntu              14.04               90d5884b1ee0        5 Tage her          188 MB
php                 5.6                 f40e9e0f10c8        9 Tage her          444.8 MB
nginx               latest              6f8d099c3adc        12 Tage her         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 Wochen her         324.6 MB
httpd               latest              02ef73cf1bc0        3 Wochen her         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 Wochen her         136.3 MB
hello-world         latest              690ed74de00f        6 Monate her        960 B
training/webapp     latest              6fae60ef3446        12 Monate her       348.8 MB

using our new image w3codebox/ubuntu to start a container

w3codebox@w3codebox:~$ docker run -t -i w3codebox/ubuntu:v2 /bin/bash                            
root@1a9fbdeb5da3:/#

to build the image

We use the command docker build , From scratch to create a new image. To do this, we need to create a Dockerfile file that contains a set of instructions to tell Docker how to build our image.

w3codebox@w3codebox:~$ cat Dockerfile 
FROM centos:6.7
MAINTAINER Fisher "[email protected]"
RUN     /bin/echo 'root:123456' |chpasswd
RUN useradd w3codebox
RUN     /bin/echo 'w3codebox:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8""/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

Every instruction creates a new layer on the image, and the prefix of every instruction must be uppercase.

Das erste FROM spezifiziert, welchen Image-Repository verwendet wird

Das RUN-Kommando sagt Docker, dass es im Image Befehle ausführt, was installiert wurde...

Dann verwenden wir die Datei Dockerfile, um ein Image mit dem Befehl docker build zu erstellen.

w3codebox@w3codebox:~$ docker build -t w3codebox/centos:6.7 .
Sende Build-Kontext an Docker-Daemon 17.92 kB
Schritt 1 : FROM centos:6.7
 ---> d95b5ca17cc3
Schritt 2 : MAINTAINER Fisher "[email protected]"
 ---> 0 Verwende Cache
 ---> 0c92299c6f03
Schritt 3 : RUN /bin/echo 'root:123456' |chpasswd
 ---> 0 Verwende Cache
 ---> 0397ce2fbd0a
Schritt 4 : RUN useradd w3codebox
......

Parameterbeschreibung:

  • -t :Gibt den Namen des zu erstellenden Zielimages an

  • . :Verzeichnis des Dockerfile-Datei, kann den absoluten Pfad des Dockerfile angeben

Mit docker images kann man sehen, dass das erstellte Image bereits in der Liste existiert, die Image-ID ist860c279d2fec

w3codebox@w3codebox:~$ docker images 
REPOSITORY Vor etwa einer Minute
w3codebox/centos       6.7                 860c279d2FEC Vor etwa einer Minute   190.6 MB
w3codebox/ubuntu       v2                  70bf1840fd7c        17 Stunden her         158.5 MB
ubuntu              14.04               90d5884b1ee0        6 Tage her           188 MB
php                 5.6                 f40e9e0f10c8        10 Tage her          444.8 MB
nginx               latest              6f8d099c3adc        12 Tage her          182.7 MB
mysql               5.6                 f2e8d6c772c0        3 Wochen her          324.6 MB
httpd               latest              02ef73cf1bc0        3 Wochen her          194.4 MB
ubuntu              15.10               4e3b13c8a266        5 Wochen her          136.3 MB
hello-world         latest              690ed74de00f        6 Monate her         960 B
centos              6.7                 d95b5ca17cc3        6 Monate her         190.6 MB
training/webapp     latest              6fae60ef3446        12 Monate her        348.8 MB

Wir können das neue Image verwenden, um einen Container zu erstellen

w3codebox@w3codebox:~$ docker run -t -i w3codebox/centos:6.7  /bin/bash
[root@41c28d18b5fb /]# id w3codebox
uid=500(w3codebox) Gid=500(w3codebox) Gruppen=500(w3codebox)

Wie man oben sehen kann, enthält das neue Image den Benutzer w, den wir erstellt haben3codebox.

Image-Markierung festlegen

Wir können den Befehl docker tag verwenden, um dem Image einen neuen Markierungsname hinzuzufügen.

w3codebox@w3codebox:~$ docker tag 860c279d2FEC w3codebox/centos:dev

docker tag Image-ID, hier ist 860c279d2FEC, Benutzername, Image-Repository-Name (Repository Name) und der neue Markierungsname (Tag).

Mit dem Befehl docker images kann man sehen, dass die ID ist860c279d2FEC-Image hat eine zusätzliche Markierung.

w3codebox@w3codebox:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
w3codebox/centos       6.7                 860c279d2fec        5 Stunden her         190.6 MB
w3codebox/centos       dev                 860c279d2fec        5 Stunden her         190.6 MB
w3codebox/ubuntu       v2                  70bf1840fd7c        22 Stunden her        158.5 MB
ubuntu              14.04               90d5884b1ee0        6 Tage her          188 MB
php                 5.6                 f40e9e0f10c8        10 Tage her         444.8 MB
nginx               latest              6f8d099c3adc        13 Tage her         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 Wochen her         324.6 MB
httpd               latest              02ef73cf1bc0        3 Wochen her         194.4 MB
ubuntu              15.10               4e3b13c8a266        5 Wochen her         136.3 MB
hello-world         latest              690ed74de00f        6 Monate her        960 B
centos              6.7                 d95b5ca17cc3        6 Monate her        190.6 MB
training/webapp     latest              6fae60ef3446        12 Monate her       348.8 MB