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

Uso de imágenes Docker

Cuando se ejecuta un contenedor, si la imagen utilizada no existe localmente, Docker la descargará automáticamente desde el repositorio de imágenes Docker, por defecto desde el repositorio público de imágenes Docker Hub.

Vamos a aprender:

  • 1、Gestionar e usar imágenes del anfitrión local de Docker

  • 2、Crear imagen

Listar lista de imágenes

Podemos usar docker images para listar las imágenes en el anfitrión local.

w3codebox@w3codebox:~$ 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 semanas atrás         324.6 MB
httpd               latest              02ef73cf1bc0        3 semanas atrás         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 semanas atrás         136.3 MB
hello-world                                                               última              690ed74de00f        6 meses atrás        960 B
entrenamiento/webapp                                                       última              6fae60ef3446        11 meses atrás       348.8 MB

Descripción de cada opción:

  • REPOSITORY:Representa el repositorio de la imagen

  • TAG:Etiqueta de la imagen

  • IMAGE ID:ID de la imagen

  • CREATED:Fecha de creación de la imagen

  • SIZE:Tamaño de la imagen

Una fuente de repositorio puede tener múltiples TAG, representando diferentes versiones de esta fuente de repositorio, como en el repositorio ubuntu, hay 15.10、14.04 y otras versiones diferentes, usamos REPOSITORY:TAG para definir diferentes imágenes.

Por lo tanto, si queremos usar versiones como15.10Para ejecutar contenedores utilizando la imagen de sistema ubuntu, el comando es el siguiente:

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

参数说明:

  • -i: Operación interactiva.

  • -t: Terminal.

  • ubuntu:15.10: Esto significa usar ubuntu 15.10 Para iniciar un contenedor con una imagen de base de versión.

  • /bin/bash:Lo que está después del nombre de la imagen es el comando, aquí queremos tener un Shell interactivo, por lo que usamos /bin/bash.

Si desea usar la versión 14.04 Para ejecutar contenedores utilizando la imagen de sistema ubuntu, el comando es el siguiente:

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

Si no especifica una etiqueta de versión de imagen, por ejemplo, si solo usa ubuntu, Docker usará por defecto la imagen ubuntu:latest.

Obtener una nueva imagen

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

Cw3codebox@w3codebox:~$ docker pull ubuntu:13.10
13.10: Extrayendo desde la biblioteca/ubuntu
6599cadaf950: Descarga completa 
23eda618d451: Descarga completa 
f0be3084efe9: Descarga completa 
52e432f084b: Descarga completa 
a3e95caeb02: Descarga completa 
Resumen: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
Estado: Nueva imagen descargada para ubuntu:13.10

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

Buscar imagen

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

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

w3codebox@w3codebox:~$ docker search httpd

NOMBRE: Nombre de la fuente del repositorio de imágenes

DESCRIPCIÓN: Descripción de la imagen

OFICIAL: si es una publicación oficial de Docker

stars: Similar a las estrellas en Github, significa dar like o favorito.

AUTOMATIZADO: 自动构建。

拉取镜像

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

w3codebox@w3codebox:~$ docker pull httpd
Usando etiqueta predeterminada: latest
latest: Extrayendo desde la biblioteca/httpd
8b87079b7a06: Extrayendo capa de archivos 
a3e95caeb02: Descarga completa 
0d62a9c6a76: Descarga completa 
a329d50397b9: Descarga completa 
a7c1f032b5c: Esperando 
ser44112b72c7: Esperando

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

w3codebox@w3codebox:~$ docker run httpd

eliminar imagen

eliminar imagen docker rmi comando, por ejemplo, si eliminamos hello-world imagen:

$ docker rmi hello-world

Crear imagen

Cuando la imagen descargada del repositorio de imágenes de Docker no satisface nuestras necesidades, podemos modificar la imagen de las siguientes dos formas.

  • 1、Actualizar la imagen desde el contenedor ya creado y hacer commit de esta imagen

  • 2、Crear una nueva imagen con la instrucción Dockerfile

Actualizar imagen

Antes de actualizar la imagen, necesitamos usar la imagen para crear un contenedor.

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

usar dentro del contenedor en ejecución apt-get update comando para actualizar.

Después de completar la operación, ingrese el comando exit para salir de este contenedor.

Ahora el ID es e218edb10161 del contenedor, es el contenedor modificado según nuestras necesidades. Podemos hacer commit del contenedor duplicado mediante el comando docker commit.

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

explicación de los parámetros:

  • -m: información de descripción de la entrega

  • -a: especificar el autor de la imagen

  • e218edb10161:ID de contenedor

  • w3codebox/ubuntu:v2: especificar el nombre de la imagen de destino a crear

Podemos usar docker images comando para ver nuestra nueva imagen w3codebox/ubuntu:v2:

w3codebox@w3codebox:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
w3codebox/ubuntu       v2                  70bf1840fd7c        15 hace segundos      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 semanas atrás         324.6 MB
httpd               latest              02ef73cf1bc0        3 semanas atrás         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 semanas atrás         136.3 MB
hello-world                                                               última              690ed74de00f        6 meses atrás        960 B
entrenamiento/webapp                                                       última              6fae60ef3446        12 meses atrás       348.8 MB

usando nuestra nueva imagen w3codebox/ubuntu para lanzar un contenedor

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

construir imagen

Usamos el comando docker build , desde cero crear una nueva imagen. Para esto, necesitamos crear un archivo Dockerfile, que contiene un conjunto de instrucciones para decirle a Docker cómo construir nuestra imagen.

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

Cada instrucción creará una nueva capa en el espejo, y el prefijo de cada instrucción debe ser en mayúsculas.

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

w3codebox@w3codebox:~$ docker build -t w3codebox/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 w3codebox
......

参数说明:

  • -t :指定要创建的目标镜像名

  • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec

w3codebox@w3codebox:~$ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
w3codebox/centos       6.7                 860c279d2fec        About a minute ago   190.6 MB
w3codebox/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 semanas atrás          324.6 MB
httpd               latest              02ef73cf1bc0        3 semanas atrás          194.4 MB
ubuntu              15.10               4e3b13c8a266        5 semanas atrás          136.3 MB
hello-world                                                               última              690ed74de00f        6 meses atrás         960 B
centos              6.7                 d95b5ca17cc3        6 meses atrás         190.6 MB
entrenamiento/webapp                                                       última              6fae60ef3446        12 meses atrás        348.8 MB

Podemos usar la nueva imagen para crear un contenedor

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

Como se ve en la parte superior, la nueva imagen ya contiene el usuario que creamos w3codebox.

Configurar etiqueta de imagen

Podemos usar el comando docker tag para agregar una nueva etiqueta a la imagen.

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

docker tag ID_de_la_imagen, aquí es 860c279d2fec, el nombre de usuario, el nombre del repositorio (repository name) y la nueva etiqueta (tag).

Se puede ver usando el comando docker images, la ID es860c279d2La imagen de fec tiene una etiqueta adicional.

w3codebox@w3codebox:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
w3codebox/centos       6.7                 860c279d2fec        5 hours ago         190.6 MB
w3codebox/centos       dev                 860c279d2fec        5 hours ago         190.6 MB
w3codebox/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 semanas atrás         324.6 MB
httpd               latest              02ef73cf1bc0        3 semanas atrás         194.4 MB
ubuntu              15.10               4e3b13c8a266        5 semanas atrás         136.3 MB
hello-world                                                               última              690ed74de00f        6 meses atrás        960 B
centos              6.7                 d95b5ca17cc3        6 meses atrás        190.6 MB
entrenamiento/webapp                                                       última              6fae60ef3446        12 meses atrás       348.8 MB