GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo instalar y usar Docker en Ubuntu (en el mundo real)

Si está buscando información sobre cómo instalar Docker en Ubuntu, está en el lugar correcto. No solo eso, sino que, como beneficio adicional, este tutorial también le mostrará cómo ejecutar los comandos básicos de Docker para ejecutar y administrar contenedores.

Con las prácticas funciones de Visual Studio (VS) Code, también aprenderá cómo potenciar sus habilidades de SSH. ¡Empecemos!

Relacionado: Un chico de Windows en un mundo Linux:VS Code y SSH remoto

Requisitos

Si desea seguir paso a paso, en este tutorial, asegúrese de tener lo siguiente:

  1. Una instalación nueva de Ubuntu Server LTS con SSH habilitado (Esta guía usará Ubuntu Server LTS 20.04.1)
  2. Una máquina Windows con VSCode instalado (Esta guía usará Visual Studio Code 1.52.1)
  3. La extensión SSH oficial de VSCode instalada y conectado a su instalación Ubuntu Server LTS

Instalación de Docker en Ubuntu

Comencemos instalando primero Docker en Ubuntu. En este punto, el tutorial asume que está en su computadora Windows local con VS Code abierto conectado a su servidor Ubuntu a través de SSH. Aprenda a configurar este práctico entorno en el artículo más reciente sobre el uso de VS Code y SSH .

En el siguiente ejemplo, VSCode está conectado de forma remota a Ubuntu con el inicio carpeta (en este caso, /home/homelab ) abierto como espacio de trabajo:

El proceso real para instalar Docker en Ubuntu Server está a dos comandos de distancia. Ubuntu hace que Docker esté disponible como una opción de instalación en el administrador de paquetes predeterminado que viene con Ubuntu conocido como apt .

En la ventana del terminal SSH de VS Code, ejecute los siguientes dos comandos para instalar Docker:

sudo apt update -y
sudo apt install docker.io -y

Durante la instalación de Ubuntu Server, es posible que se le haya ofrecido la opción de instalar Docker en un abrir y cerrar de ojos. Si lo ha hecho, primero elimine el paquete instantáneo ejecutando sudo snap remove docker

Puede ver la instalación de Docker en la siguiente animación:

Ubuntu es lo suficientemente bueno como para habilitar y configurar automáticamente el servicio para que se inicie en el arranque, ¡así que está todo listo para comenzar a usar Docker!

Creación y ejecución de un contenedor Docker en Ubuntu

Ahora que tiene Docker instalado, ¿qué puede hacer con él? Comencemos con la creación de un contenedor Docker. Este tutorial configurará un servidor web estático como un buen ejemplo de un contenedor Docker. En esta sección, usted:

  • Configure un nuevo contenedor desde el Docker Hub Repositorio de imágenes para ejecutar un servicio HTTP
  • Utilice la asignación de puertos para asignar el puerto HTTP dentro del contenedor a su host de Ubuntu
  • Configure Bind Mounts para asignar datos importantes desde el contenedor a su host de Ubuntu
  • Configure la persistencia mediante reinicios para su contenedor

Si alguno de los pasos anteriores suena confuso, no se preocupe, cubriremos cada paso, uno a la vez para ayudarlo a comprender el proceso.

Descargando la imagen de Docker

La primera pregunta que debe hacerse es, ¿de dónde vendrá este contenedor? Echemos un vistazo a Docker Hub.

Una gran parte de Docker consiste en comprender los repositorios de imágenes . En lugar de distribuirse como paquetes, los servicios en Docker se distribuyen como imágenes de Docker.

Una imagen de Docker es una instantánea del software que el editor desea distribuir y todo el sistema de archivo. Esto es similar a crear una imagen .wim de Windows.

Esta captura del sistema de archivos hace que Docker sea tan popular:el software se captura junto con todo el entorno operativo. Al hacerlo, se eliminan los problemas introducidos por las diferencias entre los entornos de servidor.

Uno de los repositorios más populares (y predeterminado) para imágenes es el Docker Hub. también conocido como el repositorio oficial de Docker. El repositorio de imágenes es donde puede descargar miles de imágenes de Docker creadas previamente para ejecutarlas como contenedores.

Dado que este tutorial está configurando un servidor web estático, debe descargar una imagen del servidor web. Los dos servidores web más populares que existen son Apache httpd y Nginx pero para cambiar un poco las cosas y potencialmente presentarle un nuevo servidor web, usemos uno llamado Caddy .

Caddy es un servidor web conocido por su simplicidad. Se pueden implementar muchas configuraciones de servidor válidas usando una sola línea en un archivo. Simple es bueno y también es un buen ejemplo básico.

  1. Primero, deberá encontrar la imagen de Docker. En su máquina con Windows, vaya a https://hub.docker.com .
  2. Realizar una búsqueda de caddie en la esquina superior izquierda de la página. Debería ver una página similar a la siguiente:

Un beneficio (y un inconveniente) de Docker Hub es que cualquier persona, incluso usted, puede crear y cargar imágenes de Docker en el sitio.

Debe tener cuidado de asegurarse de que la imagen que elija provenga de una fuente confiable. Cualquiera puede colocar malware en una imagen si así lo desea y sube su versión a Docker Hub.

3. Anote el nombre de la imagen. En la captura de pantalla anterior, el nombre es caddy exactamente. Necesitará este nombre para especificar el nombre de la imagen en los próximos pasos.

Ejecutar un contenedor con Docker en Ubuntu

Una vez que sepa el nombre de la imagen que desea descargar, es hora de descargarla y crear un contenedor a partir de ella.

Iniciar un contenedor a partir de una imagen requiere un solo comando. En su terminal SSH conectado a su servidor Ubuntu, ejecute el siguiente docker run comando.

El siguiente comando busca el caddy imagen en la máquina local. Si no existe, descarga la imagen de Docker Hub, crea un contenedor y lo inicia. El siguiente comando usa -p cambie para asignar el puerto de escucha 80 del servidor Ubuntu al puerto 80 del contenedor. Esta función se denomina asignación de puertos.

sudo docker run -p 80:80 caddy

La mayoría de las imágenes de Docker Hub siguen una convención de nomenclatura de /. Sin embargo, las imágenes marcadas como "oficiales" por Docker no tienen un delante de ellas (como el caddie de arriba).

Ejecutar los resultados del comando anterior como el siguiente, con la información de registro de caddy que se muestra directamente en la terminal:

Puede notar que casi todos los comandos de docker están precedidos por sudo , para forzar la ejecución de los comandos como administrador. De forma predeterminada, el servicio docker se ejecuta como root y todos los cambios que realice en contenedores o imágenes deben realizarse como administrador.

Y... ¡estás listo y funcionando! Eso es todo al respecto. ¿No te alegra haber instalado Docker en Ubuntu?

Ahora navegue a http:// en su computadora con Windows y debería ver una página de destino para Caddy. Puede verlo a continuación (la IP de esta guía se reemplaza con http://homelab-docker ):

El caddie El contenedor se está ejecutando ahora, pero es posible que haya notado un problema. Ejecutando ese docker comando se hace cargo de su línea de comando. No puede ejecutar más comandos y, si la sesión finaliza, el contenedor en ejecución se detiene. Resolvamos ese problema ejecutando el contenedor en segundo plano (también conocido como separación el contenedor).

Ejecución de contenedores Docker en segundo plano

Ahora tiene un contenedor en ejecución pero su línea de comando está bloqueada. No puedes hacer nada más. Necesita una mejor manera de iniciar un contenedor ejecutándolo en segundo plano como un servicio. Para hacer eso:

  1. Detenga el contenedor actual presionando control+c en la línea de comando. Esto debería devolverle su línea de comando.
  2. Ahora, vuelva a ejecutar el mismo comando anterior solo con -d parámetro esta vez como se muestra a continuación. Verá que Docker devolverá una ID de contenedor y le devolverá la línea de comando.
sudo docker run -d -p 80:80 caddy

Administración de contenedores en segundo plano con comandos de Docker

Una vez que tenga uno o más Dockers en segundo plano ejecutándose, deberá administrarlos de alguna manera. Docker le proporciona algunos comandos diferentes para hacerlo usando docker container comandos.

  • sudo docker container list -a :enumera todos los contenedores (tanto en ejecución como detenidos) y su estado
  • sudo docker container stop <name> :detener un contenedor docker por su nombre (o por su ID)
  • sudo docker container start <name> :inicie un contenedor docker por su nombre (o por su ID)
  • sudo docker container prune :destruir y eliminar todos los contenedores detenidos

Puede ver todos los comandos anteriores utilizados en contexto en la siguiente captura de pantalla:

Hay muchos otros comandos de contenedor docker para ver, cambiar, inspeccionar o incluso acceder de forma remota a contenedores en su servidor. Puede verlos todos ejecutando sudo docker container --help .

Aunque ahora ha implementado un servidor web en un contenedor que se ejecuta en segundo plano, todavía no tiene forma de alojar su contenido personalizado. Tal como está, Caddy solo ofrece la página web predeterminada.

Ahora echemos un vistazo a cómo puede usar las imágenes de Docker con un concepto llamado montajes de enlace para implementar contenedores con datos significativos.

Almacenamiento de datos de contenedor con montajes Bind

Docker trabaja en el concepto de imágenes (y los contenedores que generan) como desechables o transitorios . Si hay una actualización del software Caddy, no actualizas el servicio, tiras todo el bebé con la bañera y usas una imagen completamente nueva desde cero.

Los beneficios de desechar y recrear contenedores como este son significativos. Las inestabilidades en el software se introducen con el tiempo al actualizar continuamente un software (potencialmente) antiguo. Al usar una imagen nueva cada vez, Docker le brinda una base estable, confiable y (presuntamente) probada en cada actualización.

Este concepto es equivalente a utilizar una instalación nueva de Windows cada vez que actualice su software de aplicación de Windows. No es una idea divertida en Windows, pero es muy aplicable en Docker.

Sin embargo, la metodología desechable tiene un problema claro. No desea que se eliminen los datos esenciales cuando su servicio actual se quede sin servicio. Docker resuelve este problema usando un concepto llamado montajes vinculantes .

Ahora exploremos cómo crear un montaje de enlace para un contenedor.

Creación de la estructura de carpetas y limpieza

Antes de poder usar montajes de vinculación, debe crear una ubicación para almacenar estos datos. Este tutorial creará una carpeta en su directorio de inicio. Para hacerlo en VS Code mientras aún está conectado a su servidor Ubuntu:

  1. Haga clic derecho en un área en blanco del VS Code Explorer panel y elija nueva carpeta.

2. Asigne a la nueva carpeta el nombre contenedores/caddie/archivos.

Los nombres de las carpetas dependen de usted, siempre que estén definidos correctamente en el próximo comando docker. Al usar una barra diagonal, VS Code interpreta esto como la creación de tres carpetas. Los archivos la carpeta es un subdirectorio de caddy y caddie es un subdirectorio de contenedores. No tiene que usar esta estructura de carpetas, pero la estructura tiene más sentido cuando tiene varios contenedores en el mismo servidor.

Si no lo hizo anteriormente, detenga y elimine cualquier contenedor que haya creado anteriormente con lo siguiente:

# stop and remove ALL currently running containers.
# The $(sudo docker ps -q) dynamically grabs all running container IDs
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune

Puede ver este comando en la siguiente captura de pantalla:

Implementación de un contenedor Caddy con soportes Bind

Ahora tiene la estructura de carpetas construida en Ubuntu Server. Es hora de crear un contenedor Caddy con soportes de unión.

  1. Antes de ir demasiado lejos, primero averigüe dónde almacena los datos persistentes el contenedor con el que está trabajando. Esa ubicación será diferente según quién haya creado la imagen de Docker y para qué sirve.

Su mejor opción para encontrar dónde se almacenan los datos persistentes es consultar la documentación dentro de Docker Hub para la imagen en cuestión. Para Caddy, puede encontrar la documentación aquí :

2. Inicie el contenedor usando el siguiente comando. -v ~/containers/caddy/files:/usr/share/caddy el parámetro está mapeando la ruta antes de los dos puntos (~/containers/caddy/files ) a la carpeta dentro del contenedor (/usr/share/caddy ). Esto funciona de manera muy similar al comando de mapeo de puertos:excepto que está mapeando una carpeta en lugar de un puerto. Este tipo de comando se llama Bind Mount .

# bind a folder on the host (the path before the colon) to
# /usr/share/caddy inside the container
sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy caddy

la tilde (~ ) en el código anterior se refiere a la carpeta de inicio. Para este artículo, eso es equivalente a /home/homelab .

3. Abra un navegador y navegue de regreso a la dirección http de su servidor. Notarás que el servidor ahora está sirviendo un 404 página. Se esperaba esto porque actualmente no tiene un index.html archivo en ~/containers/caddy/files .

4. Cree un index.html archivo en ~/containers/caddy/files en el servidor Ubuntu en la ventana de VS Code Explorer que se parece a lo siguiente:

<body><h2>hello world!</h2></body>

5. Navegue a la dirección HTTP de su servidor y confirme que el contenedor ahora está sirviendo su nuevo index.html página.

Puede ver todo lo anterior en la siguiente animación:

A diferencia de los comandos de administración de la ventana acoplable, los archivos que está creando (como index.html ) no requieren derechos administrativos. Esto se debe a que eres el propietario del contenido que sirve el servidor caddy, ya que se encuentran en tu carpeta de inicio.

Validación de Bind Mount

¡Excelente! ¡No solo está utilizando un contenedor Docker completamente nuevo, sino que ese contenedor está sirviendo contenido guardado localmente en su carpeta de inicio! Puede probar esto ejecutando lo siguiente:

  1. Deténgase y retire el contenedor en funcionamiento. Este paso elimina por completo todo, incluido el archivo index.html si no estaba usando montajes de enlace.
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune

2. Cree un contenedor nuevo.

sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy caddy

3. Verifique que el nuevo contenedor todavía sirva el archivo index.html en el http://<your server> dirección.

Creación de contenedores Docker persistentes

Un contenedor no es tan útil si se detiene cuando el servidor se reinicia. Por defecto, eso es lo que va a pasar si no haces que suceda. Para evitar esto, generemos un nuevo contenedor caddy nuevamente, pero esta vez una vez que se reinicie cuando el host de Docker, Ubuntu en este caso, se reinicie.

  1. Detenga y retire todos los contenedores en funcionamiento.
# stop and remove ALL currently running containers
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune

2. Reinicie el contenedor caddy con --restart always parámetro, para configurar este nuevo contenedor para que comience con el host al reiniciar. Con --restart always marca en su lugar, su contenedor ahora se comporta como un servicio adecuado:se inicia automáticamente en el arranque.

sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy --restart always caddy

3. Reinicie el servidor.

4. Ahora verifique que aparezca el nuevo contenedor y que aún esté sirviendo el archivo index.html en el http://<your server> dirección.

Puede ver los siguientes comandos aplicados a continuación:

Avanzando

En esta etapa, debe tener un entorno Docker en funcionamiento y una comprensión básica de las imágenes y los contenedores. Puede extraer, iniciar, detener y realizar una gestión básica de sus contenedores. También ha creado correctamente un contenedor de servicios web en ejecución utilizando montajes de enlace y asignación de puertos.

Todavía hay mucho que cubrir con respecto a Docker:Estén atentos a este espacio, ya que el próximo artículo abordará la administración avanzada de Docker mediante Docker Compose.


Docker
  1. Cómo instalar y usar Docker en Ubuntu 20.04

  2. Cómo instalar y usar Wine en Ubuntu 20.04

  3. Cómo instalar y usar Docker en Ubuntu 20.04

  4. Cómo instalar y usar Docker Compose en CentOS

  5. Cómo instalar Docker y ejecutar contenedores Docker en Ubuntu

Cómo instalar y usar R en Ubuntu

Cómo instalar y usar el comando Exa en Ubuntu 20.04

Cómo instalar y usar Docker Compose en Ubuntu 20.04

Cómo instalar y usar Docker Compose en Ubuntu 22.04

Cómo instalar y usar Docker en Ubuntu 22.04

Cómo instalar y usar Docker en Ubuntu 20.04