English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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
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
Mirror deletion using docker rmi command, such as deleting hello-World image:
$ docker rmi hello-world
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
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:/#
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.
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