Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Apuntes docker y networking, Apuntes de Desarrollo de Software

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

2019/2020

A la venta desde 21/01/2023

micha3lvega
micha3lvega 🇨🇴

2 documentos

1 / 34

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
micha3lvega
Docker
1
DOCKER
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22

Vista previa parcial del texto

¡Descarga Apuntes docker y networking y más Apuntes en PDF de Desarrollo de Software solo en Docsity!

micha3lvega

Docker

DOCKER

Tabla de contenido

Arquitectura Docker

Docker host - Server

Es el PC o servidor donde está instalado Docker.

Docker demon

Es un servicio que corre dentro del Docker host y se encarga de administrar las imágenes, contenedores y demás.

Rest API

Es el canal de comunicación entre el server ( Docker host ) y el cliente ( Docker CLI )

Docker CLI – Cliente

Permite al usuario a través de scripts o comandos interactuar con el server para administrar imágenes, contenedores y demás.

micha3lvega

Docker

Imágenes

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. )

Capas

  1. FROM (sistema operativo)
  2. RUN (instrucción que se va a ejecutar para instalar un servicio)
  3. CMD (instrucción para levantar el servicio) Notas:Las capas son de solo lectura y se definen en el DockerfileEl servicio debe quedar activo y en primer plano porque si el servicio muere el contenedor muere.Crear una imagen docker build – t {nombre_de_la_imagen}:{tag} {path_docker_file (.)} si está en la misma carpeta (Los comandos deben ser automatizados no deben preguntar nada al usuario) (-y) en los scripts ayuda.

micha3lvega

Docker

Dockerfile

FROM

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.

RUN

Permite ejecutar comandos en el contenedor, por ejemplo, instalar paquetes o librerías Sintaxis : RUN RUN [“ejecutable”,” parametro1”,” parametro2”] Comandos: fallocate Permite crear un archivo con el tamaño que uno desee. Sintaxis: fallocate - l <tamaño del archivo> Ejemplo: fallocate - l 10M /opt/file

CMD

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

ADD

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 Notas: ⮚ ADD permite ser una URL. ⮚ Si el parámetro de ADD es un archivo en un formato de compresión reconocido, será desempaquetado.

ENV

Establece variables de entorno para nuestro contenedor. Sintaxis: ENV ENV = Nota: ⮚ En el caso de la variable de entorno DEBIAN_FRONTEND=noninteractive , nos permite instalar un montón de archivos .deb sin tener que interactuar con ellos.

micha3lvega

Docker

LABEL

Nos permite aportar meta-datos a la imagen. Sintaxis: LABEL = Nota: ⮚ Si el valor de la etiqueta tiene espacios debe ir entre comillas.

USER

Establece el usuario que se va a usar cuando se ejecute cualquier operación posterior con RUN, CMD y ENTRYPOINT. Sintaxis: USER

EXPOSE

La instrucción EXPOSE muestra que puerto queremos publicar para acceder al contenedor y opcionalmente el protocolo Sintaxis: EXPOSE EXPOSE / Notas: ⮚ Es muy importante tener claro que esta instrucción NO publica directamente el puerto. Su función es comunicar a la persona que va a usar la imagen qué puerto se deben usar. ⮚ El protocolo no es obligatorio y puede ser UDP o TCP.

micha3lvega

Docker

Dockerignore

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

Mejores Prácticas

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é.

Dockerignore

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

Docker

Dockerfile

FROM

Cada vez que sea posible, haga uso de imágenes oficiales para basar sus imágenes.

RUN

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

Docker

Multi Stage Build

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:

Contenedores

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).