Docker es un conjunto de productos de plataforma como servicio (PaaS) que utilizan la visualización a nivel del sistema operativo para entregar software en paquetes denominados contenedores. Los contenedores están aislados y empaquetados con su propio software, bibliotecas y archivos de configuración; pueden comunicarse entre sí a través de canales bien definidos. Cada contenedor es ejecutado por un solo kernel de sistema operativo y, por lo tanto, utiliza menos recursos que una máquina virtual.
Diferencia entre Contenedores Docker y Máquinas Virtuales
1. Contenedores Docker
- Los contenedores Docker contienen binarios, bibliotecas y archivos de configuración junto con la propia aplicación.
- No tienen un sistema operativo invitado para cada contenedor y dependen del kernel del sistema operativo subyacente, lo que hace que los contenedores sean livianos.
- Los contenedores comparten recursos con otros contenedores en el mismo sistema operativo host y proporcionan aislamiento de procesos a nivel del sistema operativo.
2. Máquinas virtuales
- Las máquinas virtuales (VM) se ejecutan en hipervisores, lo que permite que varias máquinas virtuales se ejecuten en una sola máquina junto con su propio sistema operativo.
- Cada máquina virtual tiene su propia copia de un sistema operativo junto con la aplicación y los archivos binarios requeridos, lo que la hace mucho más grande y requiere más recursos.
- Proporcionan aislamiento de procesos a nivel de hardware y tardan en iniciarse.
Términos importantes en Docker
1. Imagen acoplable
- Es un archivo, que consta de varias capas, que se utiliza para ejecutar código en un contenedor Docker.
- Son un conjunto de directivas que se utilizan para crear contenedores de base.
2. Contenedor Docker
- Su imagen es una muestra de tiempo de ejecución.
- Permite a los desarrolladores empaquetar aplicaciones con todas las partes requeridas, como bibliotecas y otras dependencias.
3. Archivo acoplable
- Es un documento de texto que contiene los comandos necesarios que ayudan a construir una imagen de Docker cuando se construye.
- Una imagen acoplable se crea mediante un archivo acoplable.
4. Motor acoplable
- El software que aloja los contenedores se llama Docker Engine.
- Docker Engine es una aplicación cliente-servidor
- El motor acoplable 3 principales componentes:
- Servidor: es responsable de crear y administrar imágenes, contenedores, redes y volúmenes de Docker en Docker. Se conoce como un proceso daemon.
- API REST: especifica cómo las aplicaciones pueden interactuar con el servidor y le indica qué hacer.
- Cliente: El Cliente es una interfaz de línea de comandos (CLI) de Docker, que nos permite interactuar con Docker usando los comandos de Docker.
5. Recomendar Docker
- Docker Hub es el repositorio oficial en línea donde puede encontrar otras imágenes de Docker disponibles para su uso.
- Facilita encontrar, administrar y compartir imágenes de contenedores con otros.
Instalar Docker en Ubuntu
1. Eliminar la versión anterior de Docker
$ sudo apt-get remove docker docker-engine docker.io containerd runc
2. Instalar el motor Docker
$ sudo apt-get update $ sudo apt-get install ca-certificates curl gnupg lsb-release $ sudo mkdir -p /etc/apt/keyrings $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null $ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin $ sudo groupadd docker $ sudo usermod -aG docker $USER
Compruebe si la ventana acoplable se instaló correctamente en su sistema
$ sudo docker run hello-world
Crear una aplicación en Docker
1. Cree una carpeta con 2 archivos (Dockerfile y archivo main.py) en ella.
- Dockerfile
- principal.py
2. Edite main.py con el siguiente código.
Python3
#!/usr/bin/env python3 print ( "Docker and GFG rock!" ) |
3. Edite Dockerfile con los siguientes comandos.
FROM python:latest COPY main.py / CMD [ "python", "./main.py" ]
4. Cree una imagen de Docker.
Una vez que haya creado y editado el archivo main.py y el Dockerfile, cree su imagen para que contenga su aplicación.
$ docker build -t python-test .
La opción ‘-t’ permite definir el nombre de su imagen. El nombre que hemos elegido para la imagen es ‘python-test’.
5. Ejecute la imagen de Docker
Una vez que se crea la imagen, su código está listo para ejecutarse.
$ docker run python-test
Empuje la imagen a Docker Hub
1. Cree una cuenta en Docker Hub.
2. Haga clic en el botón «Crear repositorio», ingrese el nombre del archivo y haga clic en «Crear».
3. Ahora etiquetaremos «nuestra imagen» y la «empujaremos al repositorio de Docker Hub» que hemos creado.
Ahora, ejecute el siguiente comando para enumerar las imágenes de la ventana acoplable:
$ docker images
Lo anterior nos dará este resultado.
REPOSITORY TAG IMAGE_ID CREATED SIZE afrozchakure/python-test latest c7857f97ebbd 2 hours ago 933MB
Se utiliza un ID de imagen para etiquetar la imagen. La sintaxis para etiquetar la imagen es:
docker tag <image-id> <your dockerhub username>/python-test:latest $ docker tag c7857f97ebbd afrozchakure/python-test:latest
4. Empuje la imagen al repositorio de Docker Hub
$ docker push afrozchakure/python-test
Obtenga y ejecute la imagen desde Docker Hub
1. Para eliminar cada versión de una imagen en particular del sistema local, usamos la identificación de la imagen para ello.
$ docker rmi -f af939ee31fdc
2. Ahora ejecute la imagen, obtendrá la imagen del concentrador acoplable si no existe en su máquina local.
$ docker run afrozchakure/python-test
Conclusión:
Así que aprendió sobre los conceptos básicos de Docker, la diferencia entre las máquinas virtuales y los contenedores de Docker junto con alguna terminología común en Docker. Además, pasamos por la instalación de Docker en nuestros sistemas. Creamos una aplicación usando Docker y enviamos nuestra imagen a Docker Hub. Finalmente, aprendimos cómo podíamos extraer una imagen en particular de nuestro sistema local y luego extraer la imagen de Docker Hub si no existe localmente.