Cómo instalar Docker en Linux Ubuntu (proceso idéntico para otras distribuciones de Linux como Debian) y cómo descargar, desplegar y ejecutar la imagen «hello-word» de pruebas. Mostramos los contenedores en ejecución, los detenemos y los eliminamos. Ejecutamos un contenedor de un sitio web estático simple para mostrar el «mapeo» de puertos de Docker.
- Qué es Docker.
- Instalar Docker en Linux Ubuntu.
- Ejecutando imagen «Hola mundo» en Docker para verificar que se ha instalado correctamente.
- Ejecutar imagen de sitio web estático en Docker y acceso externo.
- Listar, detener y eliminar contenedores iniciados en Docker.
Qué es Docker
Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software. Proporciona una capa adicional de abstracción y automatización de virtualización de aplicaciones en múltiples sistemas operativos.
Docker utiliza características de aislamiento de recursos del kernel Linux, tales como cgroups y espacios de nombres (namespaces) para permitir que los contenedores independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales.
Docker es una herramienta que puede empaquetar una aplicación y sus dependencias en un contenedor virtual que se puede ejecutar en cualquier servidor Linux. Esto ayuda a permitir la flexibilidad y portabilidad en donde la aplicación se puede ejecutar, ya sea en las instalaciones físicas, la nube pública, nube privada, etc.
Instalar Docker en Linux Ubuntu
En primer lugar ejecutaremos el siguiente comando para actualizar la lista de paquetes disponibles y sus versiones en Linux Debian:
1 |
sudo apt-get update |
Ejecutaremos el siguiente comando para instalar los paquetes dependientes que necesitará Docker:
1 2 3 4 5 |
sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release |
Agregaremos las GPG key de Docker:
1 |
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg |
Agregamos un repositorio estable (stable) de Docker con el comando:
1 2 3 |
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null |
Volvemos a ejecutar el siguiente comando para actualizar versiones de paquetes, es necesario volver a ejecutarlo para que se agreguen y actualicen los nuevos paquetes del repositorio de Docker agregado anteriormente:
1 |
apt-get update |
Instalamos Docker con el comando:
1 |
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin |
Se iniciará la instalación de Docker:
Ejecutando imagen «Hola mundo» en Docker para verificar que se ha instalado correctamente
Ejecutaremos el siguiente comando, que la primera vez que lo ejecutamos detectará que la imagen «hello-world» no está instalada en Docker, por lo que la descargará y desplegará. Tras descargarla y desplegarla la ejecutará:
1 |
sudo docker run hello-world |
Si lo volvemos a ejecutar una segunda vez, ejecutará la imagen directamente dado que ya está descargada y desplegada:
Nos mostrará el siguiente texto, indicando que en la primera ejecución no lo encuentra y lo descarga e instala y ejecuta. En la segunda ejecución, como ya está instalado, sólo lo ejecuta:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 2db29710123e: Pull complete Digest: sha256:80f31da1ac7b312ba29d65080fddf797dd76acfb870e677f390d5acba9741b17 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/ |
Ejecutar imagen de sitio web estático en Docker y acceso externo
Ejecutaremos el siguiente comando para instalar la imagen «static-site», que como siempre en Docker, si no la encuentra en local la descargará e instalará:
1 |
sudo docker run --name static-site -e AUTHOR="ProyectoA" -d -P dockersamples/static-site |
En el caso de la imagen «static-site», necesita ejecutarse en modo separado, por ello hemos usado el comando -d. Este es un requisito de esta imagen de ejemplo.
Para ver los puertos levantados al levantar esta imagen, ejecutaremos el comando:
1 |
sudo docker port static-site |
Que nos devuelve:
1 2 3 4 |
443/tcp -> 0.0.0.0:49157 443/tcp -> :::49157 80/tcp -> 0.0.0.0:49158 80/tcp -> :::49158 |
Por lo tanto ya tenemos iniciado el contenedor de sitio web estático en local, si queremos acceder desde local podemos ejecutar el comando:
1 |
curl localhost:49158 |
El puerto 49158 es el que el Docker ha asignado al equivalente al 80 en el contenedor del static-site.
Nos devolverá el contenido del fichero index del sitio web estático del contenedor del Docker:
Si queremos acceder al servidor web del contenedor del Docker desde un equipo externo, podemos ejecutar el contenedor con este comando, para mapear los puertos:
1 |
sudo docker run --name static-site -e AUTHOR="ProyectoA" -d -p 8888:80 dockersamples/static-site |
El comando anterior supone que no existe la imagen «static-site», en caso de existir en Docker, renombraremos la imagen a ejecutar, por ejemplo a static-site-2.
Listar, detener y eliminar contenedores iniciados en Docker
Para mostrar un listado de todos los contenedores iniciados en Docker ejecutaremos el comando:
1 |
sudo docker ps |
Que nos devolverá algo así:
En nuestro entorno de Docker, tenemos en ejecución el contenedor con ID 9f6a36b477d4. Si queremos detenerlo ejecutaremos el comando:
1 |
sudo docker stop 9f6a36b477d4 |
Y si queremos eliminarlo completamente ejecutaremos:
1 |
sudo docker rm 9f6a36b477d4 |