0% encontró este documento útil (0 votos)
8 vistas10 páginas

Introducción a Docker en Informática

Docker permite crear entornos virtuales aislados llamados contenedores para desplegar aplicaciones de forma portable y escalable. Se puede instalar Docker tanto en sistemas Linux, Mac y Windows para crear e interactuar con contenedores a través de comandos o una interfaz gráfica. El documento explica conceptos clave como imágenes, contenedores y registros, y detalla los pasos para instalar Docker, crear e inspeccionar contenedores, y generar nuevas imágenes personalizadas usando Dockerfile.

Cargado por

Fer Nando
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
8 vistas10 páginas

Introducción a Docker en Informática

Docker permite crear entornos virtuales aislados llamados contenedores para desplegar aplicaciones de forma portable y escalable. Se puede instalar Docker tanto en sistemas Linux, Mac y Windows para crear e interactuar con contenedores a través de comandos o una interfaz gráfica. El documento explica conceptos clave como imágenes, contenedores y registros, y detalla los pasos para instalar Docker, crear e inspeccionar contenedores, y generar nuevas imágenes personalizadas usando Dockerfile.

Cargado por

Fer Nando
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

DOCKER

Brinda un entorno confiable tanto para desarrollar como para desplegar aplicaciones en
producción.

2. INTRODUCCIÓN A LAS TECNOLOGÍAS DE VIRTUALIZACIÓN

Docker es una implementación de las tecnologías de virtualización basadas en contenedores.


Las tecnologías de virtualización nos permiten, a partir de software, crear una versión virtual de
un recurso tecnológico, desde una pequeña terminal hasta un sistema operativo completo.

La era antes de la virtualización


Anteriormente el proceso de deploy de aplicaciones era complicado, ya que requería un
proceso de configuración, e incluso la adquisición de equipos para poder montar todo sobre un
servidor físico.

Llegada de la virtualización
Con el tiempo nacieron los gestores de virtualización, siendo el más conocido hypervisor, esto
permitía que se pudieran emular sistemas operativos completos desde una computadora física,
pudiendo tener de manera nativa un sistema operativo y ejecutando otro completamente
distinto dentro de él.

A pesar de que esto resolvía muchos problemas que se tenían al desplegar las aplicaciones
desde un solo servidor físico; también tenía sus limitaciones, ya que se creaba todo un sistema
operativo para ciertas funciones y estas no sacaban provecho de todo lo que podían tener a
disposición.
Uso de Contenedores
Al principio, utilizar la virtualización fue una maravilla hasta que se empezaron a desplegar
muchas aplicaciones dentro de máquinas virtuales en una sola estación, cada máquina virtual
necesitaba de sus propios recursos y, al desplegar muchas aplicaciones, estos se agotaban
haciendo que el sistema colapsara.

Afortunadamente, Solomon Hykes tuvo una idea revolucionaria, crear pequeñas secciones de
virtualización que solamente contengan lo más esencial para hacer que las tareas que
necesitemos, en vez de virtualizar todo un sistema operativo [Link] fue denominado,
contenedores.

Los contenedores nos permiten tener una capa muy abstracta de virtualización en la que
solamente podemos ejecutar una sola tarea y hacerla bien, de manera aislada, segura,
escalable y portable.
3. ARQUITECTURA CLIENTE/SERVIDOR

Docker posee una arquitectura cliente/servidor. Para poder usar Docker debemos tener
instalados ambos, cliente y servidor en nuestra computadora.

Nosotros tenemos interacción con el servicio de Docker a través de un cliente. Existen dos: el
cliente de línea de comandos, y el cliente gráfico llamado Kitematic.
El daemon de Docker (docker server/docker engine) es un servicio persistente que se encarga
de construir, ejecutar y distribuir nuestros contenedores de Docker.

Docker fue hecho inicialmente para funcionar únicamente en sistemas Linux ya que éste hace
uso de características específicas del kernel, pero con el tiempo se fue adaptando para que
pudiera ser ejecutado en sistemas OS X y Windows.

4. INSTALACIÓN EN MAC Y WINDOWS

Actualmente existen dos versiones de Docker, Enterprise Edition (EE) y Community Edition
(CE), nosotros instalaremos esta última. Esta versión viene en otras dos sub-versiones, edge y
stable, la versión edge es la que tiene los cambios más recientes pero puede estar propensa a
fallas, en cambio la versión stable (como su nombre lo indica) es más estable, funcional y
menos propensa a fallas por lo que será la versión que estaremos utilizando.

[Link]
[Link]

Todo esto si:


* Estás utilizando Mac y la versión de tu sistema operativo es OS X 10.11 o superior.
* Estás utilizando Windows y la versión de tu sistema operativo es Windows 10 Professional o
superior.

En caso contrario, debes instalar Docker-Toolbox.

5. INSTALACIÓN DE DOCKER EN LINUX

Preparar el repositorio
Primero, necesitamos actualizar nuestros repositorios locales:

sudo apt-get update

Después, tenemos que instalar algunos paquetes para que apt pueda trabajar sobre https, esto
lo hacemos con el siguiente comando:

sudo apt-get install apt-transport-https ca-certificates curl software-properties-


common

Después añadimos la llave GPG oficial de Docker con el comando:

curl -fsSL [Link] | sudo apt-key add

Luego agregamos el repositorio:

sudo add-apt-repository "deb [arch=amd64]


[Link] $(lsb_release -cs) stable"

Instalar Docker
Después de tener instalado el repositorio debemos actualizar nuevamente los repositorios
locales, esto con la finalidad de que Docker sea visto como un paquete que se puede instalar.
Para hacerlo, nuevamente ejecutamos

sudo apt-get update


A continuación simplemente instalamos Docker con el comando:

sudo apt-get install docker-ce

Por defecto, al instalar Docker, éste sólo puede ser usado por medio de sudo, así que es muy
importante darle permisos a nuestro usuario para poder utilizar Docker sin este prefijo.

Para poder hacer que nuestro usuario ejecute Docker sin la necesidad de teclear sudo,
debemos agregar el grupo docker a nuestro usuario, esto lo logramos con el comando

sudo usermod -aG docker $nombre_usuario.

Después, solamente tenemos que cerrar sesión y al volver a iniciarla, ya tendremos nuestro
usuario configurado para trabajar con Docker.

6. CONCEPTOS IMPORTANTES

Docker tiene una serie de conceptos que son necesarios conocer antes de comenzar a
utilizarlo.

Imágenes
Las imágenes son plantillas de sólo lectura que contienen todo lo necesario para hacer que
ciertas funciones sean ejecutadas (Nginx, MongoDB, PHP, etc.) y se utilizan para poder crear
contenedores.

Contenedores
Son instancias de una imágen y nos ayudan a poder tener un entorno aislado para nuestras
aplicaciones.

Registry
Es el lugar en donde podemos almacenar nuestras imágenes para poder descargarlas desde
otros equipos, el registry público de Docker es Docker Hub pero podemos nosotros hospedar
nuestro propio registry en caso de necesitarlo e incluso GitLab ofrece esa funcionalidad.

Repositorio
Es una colección de diferentes imágenes con un mismo nombre, pero diferente tag, usualmente
utilizado para poder tener un versionamiento de las imágenes que vamos generando con el
paso del tiempo.

7. CREAR UN CONTENEDOR EN DOCKER

Primero que nada, debemos descargar la imagen que vamos a utilizar y esto se puede hacer
de dos maneras, con el comando

docker pull NOMBRE_DE_LA_IMAGEN

o directamente iniciando el contenedor con el comando

docker run NOMBRE_DE_LA_IMAGEN

En cualquier caso, si la imagen no la tenemos localmente se descargara del Registry.

Una vez que hayamos descargado la imagen, podemos verificar que está localmente con el
comando:

docker images

Esto nos va a mostrar todas las imágenes que tengamos en nuestra computadora así como la
versión de las mismas, si al momento de descargar una imagen no especificamos la versión,
por defecto nos mostrará la versión latest.

Para mostrar los contenedores que se encuentran ejecutando:

docker ps

Para mostrar todos los contenedores incluso los que dejaron de funcionar:

docker ps -a
Para obtener información sobre un contenedor

docker inspect NOMBRE_DEL_CONTENEDOR

Para ver los logs que genera un contenedor en tiempo real

docker logs -f NOMBRE_DEL_CONTENEDOR

8. PARÁMETROS EN LA CREACIÓN DE UN CONTENEDOR

-d //(detached) para ejecutar el contenedor en el background.

--rm //elimina el contenedor cuando finalice sus tareas.

-v // mapea un volumen. Sirve para compartir un directorio desde nuestro host hacia el
contenedor.

-p //publica un puerto del contenedor hacia el host.

9. CREACIÓN DE IMÁGENES

Docker commit
Se puede crear una imagen en base a un contenedor. Esto se hace cuando se necesita
agregarle características extras a una imagen.
Se debe iniciar un contenedor, realizarle los cambios necesarios y guardando la imagen para
poder utilizarla posteriormente.

docker commit <id_contenedor> <nombre_imagen>:<tag_imagen>

Dockerfile
Un Dockerfile es un archivo de texto que permite automatizar los pasos de la creación de una
imagen, lo cual es útil ya que solamente se debe escribir este archivo una vez y se puede crear
la imagen tantas veces como sea necesario.

El archivo Dockerfile debe tener la primera letra en mayúscula. Lo podemos crear desde la
terminal utilizando un editor como Vim: vim Dockerfile
Un Dockerfile está compuesto por instrucciones que especifican qué características se le
agregaran a la imagen.

El comando docker build creará la imagen de Docker basándose en el contenido del Dockerfile:
docker build -t NOMBRE_NUEVA_IMAGEN:TAG contexto_del_build

Las instrucciones suelen escribirse en letras mayúsculas.

Instrucción FROM
Es la primera instrucción que se escribe dentro de un Dockerfile e indica cuál es la imagen que
se tomará como base para crear la nueva imagen.

Instrucción RUN
Ejecuta los comandos necesarios para crear la imagen, estos son comandos que normalmente
se utilizan en una terminal, tomando como base la imagen base, es decir, si por ejemplo el
Dockerfile está tomando como base una imagen de Debian se podrá hacer uso de comandos
que normalmente se encuentran en bash.

Es recomendable encadenar los comandos dentro de esta instrucción ya que así se podrá
reducir el número de capas en la imagen resultante.

Una buena práctica es encadenar alfabéticamente los parámetros en caso de que algún
comando los requiera, como puede ser la instalación de paquetes. Esto puede ayudar a la
legibilidad del archivo y a evitar la duplicación de parámetros.

Instrucción CMD
Esta instrucción se utiliza para especificar el comando por defecto que se va a utilizar al crear
un contenedor con esta imagen. Normalmente es utilizada para indicar qué comando va a
iniciar la tarea para la que está hecha la imagen.

En caso de que no indiquemos una instrucción CMD, la imagen va a utilizar la instrucción


proveniente de la imagen base

Docker Cache
Cuando creamos una imagen, todas las instrucciones del Dockerfile estarán añadiendo una
nueva capa a la imagen, por lo que Docker va a almacenar estas instrucciones en caché para
poder hacer el proceso de construcción de la imagen más rápido si se requiere volver a
construirla.

Si una instrucción cambia, Docker va a dejar de utilizar el caché a partir de la instrucción que
fue modificada.

Instrucción COPY
Sirve para copiar archivos que se tengan en el contexto del build hacia el contenedor. Estos
archivos deben existir en el contexto, de lo contrario el proceso de construcción de la imagen
se verá interrumpido y se obtendrá un error.
Los archivos que se indiquen en esta instrucción se copiarán al filesystem de la imagen para
poder ser utilizados en los contenedores que se creen a partir de esta imagen.

Instrucción ADD
Al igual que la instrucción COPY, esta sirve para agregar archivos al filesystem de la imagen,
pero tiene la ventaja de que permite obtener archivos desde internet, además de que también
permite desempaquetar archivos comprimidos de manera automática.

También podría gustarte