


























Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Este documento contiene todo lo necesario para ayudarte cuando esté aprendiendo docker desde cero, contiene desde como instalarlo pasando por comandos básicos y avanzados, además de ejemplo e imágenes de ayuda
Tipo: Apuntes
1 / 34
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!



























micha3lvega
Es el PC o servidor donde está instalado Docker.
Es un servicio que corre dentro del Docker host y se encarga de administrar las imágenes, contenedores y demás.
Es el canal de comunicación entre el server ( Docker host ) y el cliente ( Docker CLI )
Permite al usuario a través de scripts o comandos interactuar con el server para administrar imágenes, contenedores y demás.
micha3lvega
Es un paquete que contiene lo necesario para que pueda ejecutarse la aplicación esta puede contener N capas también debe contener un mini sistema operativo ( CentOS, Ubuntu, etc. )
micha3lvega
Sistema operativo sobre la cual se manejara la imagen FROM CENTOS: Sintaxis : FROM {sistema_operativo}: {label} (Por defecto latest) Nota: ⮚ Es mejor siempre especificar el label porque al no hacerlo siempre llama el tag latest y si se cambia la versión puede dañar la compilación.
Permite ejecutar comandos en el contenedor, por ejemplo, instalar paquetes o librerías Sintaxis : RUN
Esta instrucción nos provee valores por defecto a nuestro contenedor, es decir, mediante esta podemos definir una serie de comandos que solo se ejecutaran una vez que el contenedor se ha inicializado, pueden ser comandos Shell con parámetros establecidos. Sintaxis : CMD [“ejecutable”, “parámetro1”, “parámetro2”], este es el formato de ejecución. CMD [“parámetro1”, “parámetro2”], parámetro por defecto para punto de entrada. CMD comando parámetro1 parámetro2, modo Shell. Nota: Este comando también puede ejecutar archivos .sh que se hayan copiado antes en el contenedor con el comando COPY
Hace exactamente lo mismo que COPY , pero además añade dos funcionalidades. La primera es que permite indicar contenidos vía URL , y la segunda es la extracción de archivos TAR. (Si se trata de copiar carpetas locales es mejor usar COPY) Sintaxis : ADD
Establece variables de entorno para nuestro contenedor. Sintaxis: ENV
micha3lvega
Nos permite aportar meta-datos a la imagen. Sintaxis: LABEL
Establece el usuario que se va a usar cuando se ejecute cualquier operación posterior con RUN, CMD y ENTRYPOINT. Sintaxis: USER
La instrucción EXPOSE muestra que puerto queremos publicar para acceder al contenedor y opcionalmente el protocolo Sintaxis: EXPOSE
micha3lvega
Es recomendable colocar cada DockerFile en un directorio limpio, y según la imagen que vayamos a crear pues agregamos los archivos que son necesarios. Es posible que tengamos algún archivo en el directorio que cumpla una función, pero no queremos que sea agregado a la imagen, es por esto que debemos hacer uso de un archivo. dockerignore para que docker build excluya esos archivos durante la creación de la imagen. carpeta /prueba //prueba prueba? file.file
⮚ No instale Paquetes Innecesarios Para reducir la complejidad, dependencias, tiempo de creación y tamaño de la imagen resultante, se debe evitar instalar paquetes extras o innecesarios solo para tenerlos ahí y que no van a cumplir ninguna función en la imagen. Si algún paquete es necesario durante la creación de la imagen, lo mejor es desinstalarlo durante el proceso. Minimizar el número de capas Debemos encontrar el balance entre la legibilidad del Dockerfile y minimizar el número de capa que utiliza. ⮚ Correr un solo proceso por contenedor En la mayoría de los casos, se debe correr solo un proceso en un contenedor, claro está esto dependerá del uso que le vamos a dar al contenedor. Desacoplar los componentes de una aplicación entre múltiples contenedores, hará más sencillo escalar horizontalmente y reutilizar los contenedores. ⮚ Organice argumentos de Múltiples Líneas Cada vez que sea posible y para hacer más fácil futuros cambios, organice argumentos que contengan múltiples líneas, esto evitará la duplicación de paquetes y hará que el archivo sea más fácil de leer. Ejemplo : RUN apt-get update && apt-get install - y
git
wget
apache2
php ⮚ Caché de la Creación de Imágenes Durante el proceso de la creación de imágenes, Docker seguirá las instrucciones del DockerFile en el orden especificado. En cada instrucción Docker busca una imagen existente en el caché que pueda reutilizar, en vez de generar imágenes duplicadas. En caso de que no quieran que Docker haga uso de imágenes en el caché simplemente es pasarle --no-cache=true al comando docker build. Sin embargo es importante que se entienda cuando docker encontrará o no una imagen que pueda reutilizar, en caso de que dejemos que use el caché.
Es recomendable colocar cada DockerFile en un directorio limpio, y según la imagen que vayamos a crear pues agregamos los archivos que son necesarios. Es posible que tengamos algún archivo en el directorio que cumpla una función, pero no queremos que sea agregado a la imagen, es por esto que debemos hacer uso de un archivo .dockerignore para que docker build excluya esos archivos durante la creación de la imagen. Ejemplo de un .dockerignore carpeta /prueba //prueba prueba? file.file prueba?
micha3lvega
Cada vez que sea posible, haga uso de imágenes oficiales para basar sus imágenes.
Para hacer más legible y entendible su DockerFile , divida comandos extensos y complicados en múltiples líneas. Una de los comandos más utilizados con RUN son la instalación de Paquetes o actualizaciones, por ejemplo , apt-get update, apt-get upgrade. Debemos evitar el uso de apt-get upgrade o dist-upgrade , ya que los paquetes esenciales no llegan a ser actualizados en un contenedor no privilegiado. Si se encuentra con una imagen que tiene un paquete desactualizado, sencillamente haga un apt- get install - y para que lo actualice automáticamente. Siempre, combine RUN apt-get update y apt-get install en la misma instrucción, ya que de hacerlo por separado nos toparíamos con un tema de Caching. Recuerden todo lo que hablamos del uso de la caché, si Docker encuentra una imagen que pueda reutilizar y no necesariamente es la que acaba de generar con apt-get update , terminará con paquetes desactualizados. Ejemplo de un correcto uso: RUN apt-get update && apt-get install - y
git
apache2
php5 \
micha3lvega
Permite crear múltiples imágenes de Docker en el mismo Dockerfile Notas: ● Podrás utilizar múltiples sentencias FROM en el mismo Dockerfile. ● El último FROM siempre será el válido. ● La etiqueta as sirve para identificar las máquinas. Ejemplo Dockerfile:
Son aquellos que contienen imágenes, volúmenes y la parte de red para comunicación con otros contenedores ⮚ Son temporales. ⮚ Las capas son de lectura y escritura. ⮚ Son una instancia de ejecución de una imagen. ⮚ Se pueden crear varios contenedores basados en una sola imagen ⮚ (todos aquellos cambios que se hagan en el contenedor son temporales y se borran al reiniciar el contenedor).