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/02/20 12:46] 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>
  
-==== Instrucciones en Dockerfile ====+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> 
 + 
 +==== 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. 
 +Su función es automatizar la creación de imágenes, permitiendo facilmente repetir o modificar la creación de imágenes. 
 + 
 +=== Instrucciones en Dockerfile ====
 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/"]
  
-==== Dockerfile ==== +#  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. 
-Dockerfile es como un ficherto de texto que contienen una serie de instrucciones del tipo scriptque se utiliza para construir automáticamente imágenes.+ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"
 +</sxh> 
 +<note tip>Si nos fijamos en el ejemplo todas las instrucciones como FROMMAINTAINER 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/