meta data de esta página
  •  

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
virtualizacion:docker:dockerfile [2019/03/08 14:57] – [Dockerfile] lcvirtualizacion:docker:dockerfile [2023/01/18 14:37] (actual) – editor externo 127.0.0.1
Línea 1: Línea 1:
-===== Crear imágenes en Docker =====+===== Docker images ===== 
 +Desde docker podemos descargar imágenes de contenedores o crear nuestras propias imágenes.Una imágen estara formada por varias capas (layers)
  
-==== Docker Build ==== +==== Comandos ==== 
-Docker Buid es el comando para generar imáganes en base a un fichero **Dockerfile** que describe la imágen y el contexto que suele ser el directorio de trabajo local donde van a estar los ficheros+  * **Ver las imágenes que tenemos disponibles en nuestro equipo**<sxh>docker images</sxh>
  
 +Esto nos mostrará la información de la imagen de Docker:
 +  * REPOSITORY (nombre del repositorio)
 +  * TAG (Etiqueta)
 +  * IMAGE_ID (Identificador único de la imagen)
 +  * SIZE (Tamaño del archivo)
 +  * CREATED (Cuando fue creado este subrepositorio)
  
 +  * **Descargar una imágen**<sxh>docker pull <nombre_de_la_Imagen></sxh>
  
-==== Dockerfile ====+==== Como crear imágenes en Docker ==== 
 + 
 +=== Docker Build === 
 +**docker build** es el comando para generar imágenes en base a un fichero **Dockerfile** que describe la imágen y el contexto que suele ser el directorio de trabajo local donde van a estar los ficheros 
 + 
 +=== Dockerfile ===
 Dockerfile es un ficherto de texto que contienen una serie de instrucciones del tipo script, que se utiliza para construir automáticamente imágenes. Dockerfile es un ficherto de texto que contienen una serie de instrucciones del tipo script, que se utiliza para construir automáticamente imágenes.
 Su función es automatizar la creación de imágenes, permitiendo facilmente repetir o modificar la creación de imágenes. Su función es automatizar la creación de imágenes, permitiendo facilmente repetir o modificar la creación de imágenes.
Línea 13: Línea 26:
 https://docs.docker.com/engine/reference/builder/ https://docs.docker.com/engine/reference/builder/
  
-  * **FROM image**  indicamos que imagen base usar para nuestro contenedor.+  * **FROM image**  indicamos que imagen base usar para nuestro contenedor.  
 +  * **MAINTAINER <nombre> <correo> <cualquier_info>** para describir al autor
   * **RUN comando** para ejecutar un comando en el contexto de la imagen.   * **RUN comando** para ejecutar un comando en el contexto de la imagen.
   * **WORKDIR path** definimos el directorio de trabajo en el contenedor.   * **WORKDIR path** definimos el directorio de trabajo en el contenedor.
   * **ENV var=value**  definimos variables de entorno en el contenedor   * **ENV var=value**  definimos variables de entorno en el contenedor
   * **EXPOSE puerto**: indicamos  puertos donde el contenedor acepta conexiones.   * **EXPOSE puerto**: indicamos  puertos donde el contenedor acepta conexiones.
-  * **VOLUME path** definimosr volúmenes en el contenedor.+  * **VOLUME path** definimos volúmenes en el contenedor. Creamos un punto de montaje que nos permite compartir archivos con la máquina anfitriona o con otros contenedores.
   * **COPY origen destino** para copiar ficheros dentro de la imagen. También se usa para multi-stage builds.   * **COPY origen destino** para copiar ficheros dentro de la imagen. También se usa para multi-stage builds.
 +  * **ADD <fuente>..<destino>** permite copiar ficheros dentro de una imagen, pero a diferencia de copy permite usar URLs remotas o archivos comprimidos con tar
 +  * **USER** usuario a usar cuando se lanza un contenedor y para la ejecución de cualquier instrucción RUN, CMD
 +  * **LABEL** añade metadatos a una imagen.
 +
 +Ejemplo de Dockerfile
 +<sxh>
 +#Utilizamos la imagen base de ubuntu 16.04
 +FROM ubuntu: 16.04
 +
 +# instalamos el servidor web apache2, para reducir el tamaño, borramos la caché de paquetes apt y la lista de paquetes descargada
 +RUN apt-get update && apt-get install -y apache2 && apt-get clean && rm -rf /var/lib/apt/lists/*
 +
 +#  exponemos el puerto http TCP/80, copiamos el fichero index.html al DocumentRoot
 +EXPOSE 80
 +ADD ["index.html","/var/www/html/"]
 +
 +#  indicamos el comando que se va a ejecutar al crear el contenedor, y además, al usar el comando ENTRYPOINT, no permitimos ejecutar ningún otro #comando durante la creación.
 +ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
 +</sxh>
 +<note tip>Si nos fijamos en el ejemplo todas las instrucciones como FROM, MAINTAINER y FROM se han escrito con mayúsculas, esto no es un requisito sino mas bien una buena práctica al escribir nuestro archivo Dockerfile.</note>
 +
 +Una vez creado nuestro fichero dockerfile para generar la imagen suponiendo que estamos en el mismo directorio que nuestro fichero dockerfile
 +**docker build <ruta>** en el caso de que estamos ejecutando el comando desde el mismo directorio donde está el dockerfile <sxh>docker build .</sxh>
 +
 +Para eliminar una imagen
 +<sxh>docker image rm <id></sxh>
  
 +=== Etiquetas ===
 +Añadirle etiquetas a nuestras imágenes nos va a servir para añadir en los metadatos de la imagen información que nos permita identificar a nuestras imágenes.
 +por ejemplo,  para crear una imagen que llamaremos holamundo con una etiqueta 1.0 suponiendo que estamos en el directorio donde se encuentra el dockerfile sería:
 +<sxh>docker build -t holamundo:1.0 . </sxh>
 ===== Referencias ===== ===== Referencias =====
   * https://docs.docker.com/engine/reference/builder/   * https://docs.docker.com/engine/reference/builder/