English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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
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.
当我们在本地主机上使用一个不存在的镜像时 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
下载完成后,我们可以直接使用这个镜像来运行容器。
我们可以从 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 docker rmi comando, por ejemplo, si eliminamos hello-world imagen:
$ docker rmi hello-world
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
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:/#
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.
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