Docker es una plataforma de creación de contenedores que le permite crear, probar e implementar rápidamente aplicaciones como contenedores portátiles y autosuficientes que pueden ejecutarse prácticamente en cualquier lugar.
Docker es el estándar de facto para la tecnología de contenedores y es una herramienta esencial para los ingenieros de DevOps y su proceso de integración y entrega continua.
En este tutorial, lo guiaremos a través del proceso de instalación de Docker en una máquina Debian 9 y exploraremos los conceptos y comandos básicos de Docker.
Requisitos previos #
Antes de continuar con este tutorial, asegúrese de haber iniciado sesión como usuario con privilegios de sudo. Todos los comandos de este tutorial deben ejecutarse como un usuario no root.
Instalar Docker en Debian #
Los siguientes pasos describen cómo instalar la última versión estable de Docker desde los repositorios de Docker.
-
Actualice los paquetes instalados a la última versión:
sudo apt update
sudo apt upgrade
-
Instale las dependencias necesarias para agregar un nuevo repositorio a través de HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg2
-
Importe la clave GPG del repositorio usando el siguiente
curl
comando:curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
Agregue el repositorio Docker APT a la lista de repositorios de software de su sistema escribiendo:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
$(lsb_release -cs)
devolverá el nombre de la distribución Debian, en este caso, devolverástretch
. -
Ahora que el repositorio de Docker está habilitado, actualice el
apt
lista de paquetes e instale la última versión de Docker CE (Community Edition) con:sudo apt update
sudo apt install docker-ce
-
Una vez que se complete la instalación, el servicio de Docker se iniciará automáticamente. Puede verificarlo escribiendo:
sudo systemctl status docker
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-07-27 17:02:07 UTC; 1min 14s ago Docs: https://docs.docker.com Main PID: 16929 (dockerd) CGroup: /system.slice/docker.service
-
En el momento de escribir este artículo, la versión actual de Docker disponible para Debian 9 es
18.06.0-ce
. Compruebe la versión de Docker con:docker -v
Docker version 18.06.0-ce, build 0ffa825
Ejecutando el comando Docker sin Sudo #
De forma predeterminada, solo un usuario con privilegios de administrador puede ejecutar comandos de Docker.
Si desea ejecutar los comandos de Docker como usuario no root sin anteponer sudo
deberá agregar su usuario al grupo docker que se crea durante la instalación del paquete Docker CE. Puede hacerlo escribiendo:
sudo usermod -aG docker $USER
$USER
es una variable de entorno que contiene su nombre de usuario.
Cierre sesión y vuelva a iniciar sesión para que se actualice la membresía del grupo.
Para verificar que puede ejecutar los comandos de la ventana acoplable sin anteponer sudo
ejecute el siguiente comando que descargará una imagen de prueba, ejecútela en un contenedor, imprima un mensaje "Hola desde Docker" y salga:
docker container run hello-world
La salida debería tener el siguiente aspecto:
Interfaz de línea de comandos de Docker #
Ahora que tenemos Docker instalado, repasemos la sintaxis básica de la CLI de Docker:
docker [option] [subcommand] [arguments]
Para enumerar todos los comandos disponibles, ejecute docker
sin parámetros:
docker
Si necesita más ayuda con cualquier [subcommand]
, puede utilizar --help
cambiar como se muestra a continuación:
docker [subcommand] --help
Imágenes de Docker #
Una imagen de Docker se compone de una serie de capas del sistema de archivos que representan instrucciones en el archivo Docker de la imagen que conforman una aplicación de software ejecutable. Una imagen es un archivo binario inmutable que incluye la aplicación y todas las demás dependencias, como bibliotecas, archivos binarios e instrucciones necesarias para ejecutar la aplicación.
Puede pensar en una imagen de Docker como una instantánea de un contenedor de Docker.
La mayoría de las imágenes de Docker están disponibles en Docker Hub.
Docker Hub es un servicio de registro basado en la nube que, entre otras funcionalidades, se utiliza para mantener las imágenes de Docker en un repositorio público o privado.
Buscar imagen de Docker #
Para buscar una imagen del registro de Docker Hub, use la search
subcomando.
Por ejemplo, para buscar una imagen de Debian, escribiría:
docker search debian
La salida debería verse así:
Como puede ver, los resultados de búsqueda imprimen una tabla con cinco columnas, NAME
, DESCRIPTION
, STARS
, OFFICIAL
y AUTOMATED
.
La imagen oficial es una imagen que Docker desarrolla en conjunto con socios upstream.
La mayoría de las imágenes de Docker en Docker Hub están etiquetadas con números de versión. Cuando no se especifica ninguna etiqueta, Docker extraerá la imagen más reciente.
Descargar imagen de Docker #
Si queremos descargar la compilación oficial de la imagen de Debian, podemos hacerlo usando image pull
subcomando:
docker image pull debian
Dependiendo de su velocidad de Internet, la descarga puede tardar unos segundos o unos minutos.
Como no hemos especificado una etiqueta, docker extraerá la última imagen de Debian, que es 9.5. Si desea extraer algunas de las versiones anteriores de Debian, digamos Debian 8, entonces debe usar docker image pull debian:8
Una vez descargada la imagen, podemos enumerar las imágenes escribiendo:
docker image ls
La salida se verá así:
Eliminar imagen de Docker #
Si por alguna razón desea eliminar una imagen, puede hacerlo con image rm [image_name]
subcomando:
docker image rm debian
Contenedores Docker #
Una instancia de una imagen se llama contenedor. Un contenedor representa un tiempo de ejecución para una sola aplicación, proceso o servicio.
Puede que no sea la comparación más adecuada, pero si es programador, puede considerar una imagen de Docker como una clase y un contenedor de Docker como una instancia de una clase.
Podemos iniciar, detener, eliminar y administrar un contenedor con el docker container
subcomando.
Iniciar contenedor Docker #
El siguiente comando iniciará un contenedor Docker basado en la imagen de Debian. Si no tiene la imagen localmente, se descargará primero:
docker container run debian
A primera vista, puede parecerle que no pasó nada en absoluto. Bueno, eso no es cierto. El contenedor de Debian se detiene inmediatamente después de iniciarse porque no tiene un proceso de ejecución prolongado y no proporcionamos ningún comando, por lo que el contenedor se inició, ejecutó un comando vacío y luego salió.
El interruptor -it
nos permite interactuar con el contenedor a través de la línea de comando. Para iniciar un tipo de contenedor interactivo:
docker container run -it debian /bin/bash
root@ee86c8c81b3b:/#
Como puede ver en el resultado anterior, una vez que se inicia el contenedor, el símbolo del sistema cambia, lo que significa que ahora está trabajando desde dentro del contenedor.
Lista de contenedores Docker #
Para enumerar contenedores en ejecución, escriba:
docker container ls
Si no tiene ningún contenedor en ejecución, la salida estará vacía.
Para ver todos los contenedores, pase -a
cambiar:
docker container ls -a
Eliminar contenedores Docker #
Para eliminar uno o más contenedores, simplemente copie el ID (o ID) del contenedor y péguelos después del container rm
subcomando:
docker container rm c55680af670c