Cómo instalar Docker en Ubuntu: guía paso a paso

Introducción

Docker es una aplicación que simplifica la gestión de procesos de aplicaciones en contenedores . Los contenedores permiten ejecutar aplicaciones en procesos con recursos aislados. Son similares a las máquinas virtuales, pero son más portátiles, consumen menos recursos y dependen más del sistema operativo host.

Para obtener una introducción detallada a los diferentes componentes de un contenedor Docker, consulte El ecosistema de Docker: una introducción a los componentes comunes .

En este tutorial, instalarás y usarás Docker Community Edition (CE) en Ubuntu. Instalarás Docker, trabajarás con contenedores e imágenes, y subirás una imagen a un repositorio de Docker. Además, aprenderás a iniciar, detener y eliminar contenedores, así como a confirmar los cambios de un contenedor en una nueva imagen de Docker. Este tutorial también explica cómo instalar Docker con compatibilidad con GPU, errores comunes y cómo solucionarlos, y las mejores prácticas de seguridad.

Implemente directamente desde GitHub en minutos.

Prerrequisitos

Para seguir este tutorial, necesitarás lo siguiente:

  • Un servidor Ubuntu configurado siguiendo la guía de configuración inicial del servidor Ubuntu , incluido un usuario sudono root y un firewall.
  • Una cuenta en Docker Hub si desea crear sus propias imágenes y enviarlas a Docker Hub, como se muestra en los pasos 7 y 8.

Paso 1: Instalación de Docker

El paquete de instalación de Docker disponible en el repositorio oficial de Ubuntu podría no ser la última versión. Para asegurarnos de obtener la última versión, instalaremos Docker desde el repositorio oficial. Para ello, añadiremos una nueva fuente de paquete, añadiremos la clave GPG de Docker para garantizar que las descargas sean válidas y, a continuación, instalaremos el paquete.

Primero, actualice su lista existente de paquetes:

sudo apt update

A continuación, instale algunos paquetes de requisitos previos que permitan aptutilizar paquetes a través de HTTPS:

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

Luego, agregue la clave GPG del repositorio oficial de Docker a su sistema:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Agregue el repositorio de Docker a las fuentes de APT:

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

Actualice nuevamente su lista existente de paquetes para que se reconozca la adición:

sudo apt update

Asegúrate de que estás a punto de instalar desde el repositorio de Docker en lugar del repositorio predeterminado de Ubuntu:

apt-cache policy docker-ce

Verá un resultado como este, aunque el número de versión de Docker puede ser diferente: Salida de la política apt-cache docker-ce

docker-ce:
  Installed: (none)
  Candidate: 5:20.10.14~3-0~ubuntu-jammy
  Version table:
     5:20.10.14~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.13~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages

Tenga en cuenta que docker-ceno está instalado, pero el candidato para la instalación es del repositorio Docker para Ubuntu.

Por último, instala Docker:

sudo apt install docker-ce

Docker ya debería estar instalado, el demonio iniciado y el proceso habilitado para iniciarse al arrancar. Compruebe que se esté ejecutando:

sudo systemctl status docker

La salida debería ser similar a la siguiente, mostrando que el servicio está activo y en ejecución:

Output● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-04-01 21:30:25 UTC; 22s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 7854 (dockerd)
      Tasks: 7
     Memory: 38.3M
        CPU: 340ms
     CGroup: /system.slice/docker.service
             └─7854 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Al instalar Docker ahora, no solo obtendrá el servicio Docker (daemon), sino también la utilidad de línea de comandos o el cliente Docker. Más adelante en este tutorial, dockerveremos cómo usar el comando.docker

Paso 2: Ejecutar el comando Docker sin sudo (opcional)

De forma predeterminada, el dockercomando solo puede ser ejecutado por el usuario root o por un usuario del grupo Docker , que se crea automáticamente durante la instalación de Docker. Si intenta ejecutar el dockercomando sin prefijarlo con sudoo sin pertenecer al grupo Docker , obtendrá un resultado como este:

Outputdocker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.

Si desea evitar escribir sudocada vez que ejecuta el dockercomando, agregue su nombre de usuario al dockergrupo:

sudo usermod -aG docker ${USER}

Para aplicar la nueva membresía del grupo, cierre la sesión del servidor y vuelva a iniciarla, o escriba lo siguiente:

su - ${USER}

Se le pedirá que ingrese su contraseña de usuario para continuar.

Confirme que su usuario ahora está agregado al grupo Docker escribiendo:

groups
Outputsammy sudo docker

Si necesita agregar un usuario al dockergrupo con el que no ha iniciado sesión, declare ese nombre de usuario explícitamente usando:

sudo usermod -aG docker username

El resto de este artículo asume que está ejecutando el dockercomando como usuario del grupo Docker . Si no lo hace, anteponga “<nombre del usuario>” a los comandos sudo.

Exploremos el dockercomando a continuación.

Paso 3: Uso del comando Docker

Usar dockerconsiste en pasarle una cadena de opciones y comandos seguidos de argumentos. La sintaxis es la siguiente:

docker [option] [command] [arguments]

Para ver todos los subcomandos disponibles, escriba:

docker

A partir de la versión de Docker20.10.14La lista completa de subcomandos disponibles incluye:

Output  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Para ver las opciones disponibles para un comando específico, escriba:

docker docker-subcommand --help

Para ver información de todo el sistema sobre Docker, utilice:

docker info

Exploremos algunos de estos comandos. Empezaremos trabajando con imágenes.

Paso 4: Trabajar con imágenes de Docker

Los contenedores Docker se crean a partir de imágenes de Docker. Por defecto, Docker obtiene estas imágenes de Docker Hub , un registro de Docker gestionado por Docker, la empresa responsable del proyecto Docker. Cualquiera puede alojar sus imágenes de Docker en Docker Hub, por lo que la mayoría de las aplicaciones y distribuciones de Linux que necesite tendrán imágenes alojadas allí.

Para comprobar si puede acceder y descargar imágenes desde Docker Hub, escriba:

docker run hello-world

La salida indicará que Docker funciona correctamente:

OutputUnable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

...

Inicialmente, Docker no pudo encontrar la hello-worldimagen localmente, por lo que la descargó de Docker Hub, el repositorio predeterminado. Una vez descargada, Docker creó un contenedor a partir de ella y la aplicación dentro del contenedor se ejecutó, mostrando el mensaje.

Puedes buscar imágenes disponibles en Docker Hub usando el dockercomando con el searchsubcomando. Por ejemplo, para buscar la imagen de Ubuntu, escribe:

docker search ubuntu

El script rastreará Docker Hub y devolverá una lista de todas las imágenes cuyo nombre coincida con la cadena de búsqueda. En este caso, el resultado será similar a este:

OutputNAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                           Ubuntu is a Debian-based Linux operating sys…   14048     [OK]
websphere-liberty                WebSphere Liberty multi-architecture images …   283       [OK]
ubuntu-upstart                   DEPRECATED, as is Upstart (find other proces…   112       [OK]
neurodebian                      NeuroDebian provides neuroscience research s…   88        [OK]
open-liberty                     Open Liberty multi-architecture images based…   51        [OK]
...

En la columna OFICIAL , OK indica una imagen creada y respaldada por la empresa responsable del proyecto. Una vez identificada la imagen que desea usar, puede descargarla a su computadora con el pullsubcomando.

Ejecute el siguiente comando para descargar la ubuntuimagen oficial a su computadora:

docker pull ubuntu

Verá el siguiente resultado:

OutputUsing default tag: latest
latest: Pulling from library/ubuntu
e0b25ef51634: Pull complete
Digest: sha256:9101220a875cee98b016668342c489ff0674f247f6ca20dfc91b91c0f28581ae
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Tras descargar una imagen, puede ejecutar un contenedor con ella mediante el runsubcomando. Como vio en el hello-worldejemplo, si no se ha descargado una imagen al dockerejecutar el runsubcomando, el cliente Docker primero la descargará y luego ejecutará un contenedor con ella.

Para ver las imágenes que se han descargado en tu ordenador, escribe:

docker images

El resultado será similar al siguiente:

OutputREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              1d622ef86b13        3 weeks ago         73.9MB
hello-world         latest              bf756fb1ae65        4 months ago        13.3kB

Como verá más adelante en este tutorial, las imágenes que utiliza para ejecutar contenedores se pueden modificar y usar para generar nuevas imágenes, que luego pueden cargarse ( el término técnico es “push “) en Docker Hub u otros registros de Docker.

Veamos cómo ejecutar contenedores con más detalle.

Paso 5: Ejecución de un contenedor Docker

El hello-worldcontenedor que ejecutaste en el paso anterior es un ejemplo de un contenedor que se ejecuta y finaliza tras emitir un mensaje de prueba. Los contenedores pueden ser mucho más útiles y pueden ser interactivos. Al fin y al cabo, son similares a las máquinas virtuales, solo que consumen menos recursos.

A modo de ejemplo, ejecutemos un contenedor con la imagen más reciente de Ubuntu. La combinación de las opciones -i y -t proporciona acceso interactivo al contenedor a través del shell:

docker run -it ubuntu

El símbolo del sistema debería cambiar para reflejar el hecho de que ahora está trabajando dentro del contenedor y debería adoptar este formato:

Outputroot@d9b100f2f636:/#

Anote el ID del contenedor en el símbolo del sistema. En este ejemplo, es d9b100f2f636. Necesitará ese ID más adelante para identificar el contenedor cuando desee eliminarlo.

Ahora puedes ejecutar cualquier comando dentro del contenedor. Por ejemplo, actualicemos la base de datos de paquetes dentro del contenedor. No necesitas prefijar ningún comando con sudo, ya que estás operando dentro del contenedor como usuario root :

apt update

Luego, instala cualquier aplicación. Instalemos Node.js:

apt install nodejs

Esto instala Node.js en el contenedor desde el repositorio oficial de Ubuntu. Al finalizar la instalación, verifique que Node.js esté instalado:

node -v

Verás el número de versión mostrado en tu terminal:

Outputv12.22.9

Cualquier cambio que realice dentro del contenedor sólo se aplicará a ese contenedor.

Para salir del contenedor, escriba exiten el aviso.

A continuación veamos cómo administrar los contenedores en nuestro sistema.

Paso 6: Administrar contenedores Docker

Después de usar Docker durante un tiempo, tendrás muchos contenedores activos (en ejecución) e inactivos en tu equipo. Para ver los activos , usa:

docker ps

Verá un resultado similar al siguiente:

OutputCONTAINER ID        IMAGE               COMMAND             CREATED

En este tutorial, iniciaste dos contenedores: uno desde la hello-worldimagen y otro desde la ubuntuimagen. Ambos contenedores ya no se ejecutan, pero aún existen en tu sistema.

Para ver todos los contenedores (activos e inactivos), ejecute docker psel -ainterruptor:

docker ps -a

Verá un resultado similar a este:

OutputCONTAINER ID   IMAGE         COMMAND   CREATED         STATUS                     PORTS     NAMES
1c08a7a0d0e4   ubuntu        "bash"     About a minute ago   Exited (0) 7 seconds ago             dazzling_taussig
587000e49d53   hello-world   "/hello"   5 minutes ago        Exited (0) 5 minutes ago             adoring_kowalevski

Para ver el último contenedor que ha creado, pásele el -linterruptor:

docker ps -l
OutputCONTAINER ID   IMAGE     COMMAND   CREATED         STATUS                     PORTS     NAMES
1c08a7a0d0e4   ubuntu    "bash"    3 minutes ago   Exited (0) 2 minutes ago             dazzling_taussig

Para iniciar un contenedor detenido, utilice docker start, seguido del ID o el nombre del contenedor. Iniciemos el contenedor basado en Ubuntu con el ID de 1c08a7a0d0e4:

docker start 1c08a7a0d0e4

El contenedor se iniciará y podrás usar docker pspara ver su estado:

OutputCONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
1c08a7a0d0e4   ubuntu    "bash"    6 minutes ago   Up 8 seconds             dazzling_taussig

Para detener un contenedor en ejecución, use docker stop, seguido del ID o nombre del contenedor. En esta ocasión, usaremos el nombre que Docker le asignó al contenedor, que es dazzling_taussig:

docker stop dazzling_taussig

Una vez que haya decidido que ya no necesita un contenedor, elimínelo con el docker rmcomando, usando nuevamente el ID o el nombre del contenedor. Use el docker ps -acomando para encontrar el ID o el nombre del contenedor asociado a la hello-worldimagen y elimínelo.

docker rm adoring_kowalevski

Puedes crear un nuevo contenedor y asignarle un nombre con el --namemodificador. También puedes usarlo --rmpara crear un contenedor que se elimine automáticamente al detenerse. Consulta el docker run helpcomando para obtener más información sobre estas y otras opciones.

Los contenedores se pueden convertir en imágenes que puedes usar para crear nuevos contenedores. Veamos cómo funciona.

Paso 7: Confirmar cambios en un contenedor a una imagen de Docker

Al iniciar una imagen de Docker, puedes crear, modificar y eliminar archivos igual que con una máquina virtual. Los cambios que realices solo se aplicarán a ese contenedor. Puedes iniciarlo y detenerlo, pero una vez que lo destruyas con el docker rmcomando, los cambios se perderán definitivamente.

Esta sección le muestra cómo guardar el estado de un contenedor como una nueva imagen de Docker.

Tras instalar Node.js en el contenedor de Ubuntu, tendrás un contenedor que se ejecuta a partir de una imagen, pero este contenedor es diferente de la imagen que usaste para crearlo. Sin embargo, podrías reutilizar este contenedor de Node.js como base para nuevas imágenes más adelante.

Luego, confirme los cambios en una nueva instancia de imagen de Docker usando el siguiente comando.

docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name

El parámetro -m se utiliza para el mensaje de confirmación que te ayuda a ti y a otros a saber qué cambios realizaste, mientras que -a se usa para especificar el autor. container_idEs el que anotaste anteriormente en el tutorial al iniciar la sesión interactiva de Docker. A menos que hayas creado repositorios adicionales en Docker Hub, repositorysuele ser tu nombre de usuario de Docker Hub.

Por ejemplo, para el usuario sammy , con el ID de contenedor de d9b100f2f636, el comando sería:

docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs

Al confirmar una imagen, esta se guarda localmente en tu ordenador. Más adelante en este tutorial, aprenderás a subir una imagen a un registro de Docker como Docker Hub para que otros usuarios puedan acceder a ella.

Al enumerar nuevamente las imágenes de Docker, se mostrará la nueva imagen, así como la antigua de la que se derivó:

docker images

Verás un resultado como este:

OutputREPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
sammy/ubuntu-nodejs   latest              7c1f35226ca6        7 seconds ago       179MB
...

En este ejemplo, ubuntu-nodejsse muestra la nueva imagen, derivada de la ubuntuimagen existente de Docker Hub. La diferencia de tamaño refleja los cambios realizados. En este ejemplo, el cambio fue la instalación de NodeJS. Así, la próxima vez que necesite ejecutar un contenedor en Ubuntu con NodeJS preinstalado, podrá usar la nueva imagen.

También puedes crear imágenes desde un archivo Dockerfile, lo que te permite automatizar la instalación de software en una nueva imagen. Sin embargo, esto queda fuera del alcance de este tutorial.

Ahora compartamos la nueva imagen con otros para que puedan crear contenedores a partir de ella.

Paso 8: Enviar imágenes de Docker a un repositorio de Docker

El siguiente paso lógico tras crear una imagen a partir de una existente es compartirla con algunos amigos, con todo el mundo en Docker Hub o en otro registro de Docker al que tengas acceso. Para subir una imagen a Docker Hub o a cualquier otro registro de Docker, debes tener una cuenta allí.

Para enviar su imagen, primero inicie sesión en Docker Hub.

docker login -u docker-registry-username

Se te pedirá que te autentiques con tu contraseña de Docker Hub. Si la especificaste correctamente, la autenticación debería ser correcta.

Nota: Si el nombre de usuario del registro de Docker es diferente del nombre de usuario local que usó para crear la imagen, deberá etiquetarla con el nombre de usuario del registro. Para el ejemplo del paso anterior, escriba:

docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs

Luego puedes enviar tu propia imagen usando:

docker push docker-registry-username/docker-image-name

Para enviar la ubuntu-nodejsimagen al repositorio sammy , el comando sería:

docker push sammy/ubuntu-nodejs

El proceso puede tardar algún tiempo en completarse mientras se cargan las imágenes, pero una vez completado, el resultado se verá así:

OutputThe push refers to a repository [docker.io/sammy/ubuntu-nodejs]
e3fbbfb44187: Pushed
5f70bf18a086: Pushed
a3b5c80a4eba: Pushed
7f18b442972b: Pushed
3ce512daaf78: Pushed
7aae4540b42d: Pushed

...


Después de enviar una imagen a un registro, debería aparecer en el panel de su cuenta, como se muestra en la imagen a continuación.

Nueva lista de imágenes de Docker en Docker Hub

Si un intento de inserción da como resultado un error de este tipo, es probable que no haya iniciado sesión:

OutputThe push refers to a repository [docker.io/sammy/ubuntu-nodejs]
e3fbbfb44187: Preparing
5f70bf18a086: Preparing
a3b5c80a4eba: Preparing
7f18b442972b: Preparing
3ce512daaf78: Preparing
7aae4540b42d: Waiting
unauthorized: authentication required

Inicia sesión con docker loginy repite el intento de envío. Luego, verifica que exista en la página del repositorio de Docker Hub.

Ahora puedes usarla para extraer la imagen a una nueva máquina y usarla para ejecutar un nuevo contenedor.docker pull sammy/ubuntu-nodejs

Instalación de Docker con soporte para GPU

Para instalar Docker con compatibilidad con GPU, deberá seguir un proceso ligeramente diferente al de la instalación estándar. Esto se debe a que la compatibilidad con GPU requiere controladores y configuraciones adicionales para que Docker pueda utilizar los recursos de la GPU. Estos son los pasos para instalar Docker con compatibilidad con GPU:

  • Asegúrese de que su sistema tenga una GPU NVIDIA compatible.
  • Instala el controlador NVIDIA para tu GPU. Puedes encontrar las instrucciones de instalación en el sitio web de NVIDIA .
  • Instale el nvidia-docker2paquete, que proporciona las herramientas necesarias para que Docker interactúe con la GPU NVIDIA.

Pasos de instalación

  • Agregue el repositorio Docker de NVIDIA:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
  • Actualice su lista de paquetes e instale el nvidia-docker2paquete:
sudo apt update && sudo apt install nvidia-docker2
  • Reinicie el servicio Docker para aplicar los cambios:
sudo service docker restart
  • Verifique que el entorno de ejecución de NVIDIA esté disponible:
sudo docker info | grep Runtime

Esto debería mostrar el tiempo de ejecución de NVIDIA como un tiempo de ejecución disponible.

Uso de la compatibilidad con GPU

Para usar la compatibilidad con GPU con tus contenedores Docker, deberás especificar el --gpusindicador al ejecutar el contenedor. Por ejemplo:

sudo docker run --gpus all nvidia/cuda:10.2-base nvidia-smi

Este comando ejecuta un contenedor con la imagen NVIDIA CUDA y ejecuta el nvidia-smicomando para verificar la compatibilidad con la GPU.

Para obtener más información sobre la instalación y el uso de Docker con soporte de GPU, consulte los siguientes recursos:

Si sigue estos pasos y utiliza los recursos proporcionados, podrá instalar y utilizar con éxito Docker con soporte de GPU en su sistema.

Configuración de las mejores prácticas de seguridad de Docker

La seguridad de Docker Engine es crucial para garantizar que sus contenedores y el sistema host estén protegidos contra posibles vulnerabilidades. A continuación, se indican algunas prácticas recomendadas:

  • Utilice el principio de mínimo privilegio : asegúrese de que sus contenedores se ejecuten con los mínimos privilegios necesarios para realizar sus tareas.
  • Utilice un usuario que no sea root : ejecute sus contenedores como un usuario que no sea root para limitar la superficie de ataque en caso de una violación.
  • Mantenga su versión de Docker actualizada : actualice periódicamente su versión de Docker para asegurarse de tener los últimos parches de seguridad.
  • Usar Docker Content Trust : habilite Docker Content Trust para garantizar la integridad de las imágenes que extrae de Docker Hub.
  • Limitar la exposición de la red : exponga únicamente los puertos necesarios a la red para minimizar la superficie de ataque.

Uso de Docker Compose

Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker multicontenedor. Permite definir los servicios que componen la aplicación y cómo interactúan entre sí. Estas son algunas ventajas de usar Docker Compose:

  • Implementación simplificada de aplicaciones : Docker Compose simplifica el proceso de implementación de aplicaciones multicontenedor.
  • Gestión sencilla de servicios : Docker Compose le permite iniciar, detener y escalar sus servicios fácilmente.
  • Control de versiones : los archivos de Docker Compose pueden controlarse por versiones, lo que facilita el seguimiento de los cambios en la configuración de su aplicación.

Eliminación de paquetes de Docker

Eliminar paquetes de Docker es esencial para mantener el sistema y garantizar que tenga instaladas las últimas versiones de Docker. A continuación, se indican algunos pasos a seguir:

  • Enumerar todos los paquetes Docker instalados : utilice el comando dpkg -l | grep dockerpara enumerar todos los paquetes Docker instalados.
  • Eliminar el paquete Docker : utilice el comando sudo apt remove docker-cepara eliminar el paquete Docker.
  • Eliminar dependencias de Docker : use el comando sudo apt autoremovepara eliminar cualquier dependencia que ya no sea necesaria.
  • Actualice su lista de paquetes : use el comando sudo apt updatepara actualizar su lista de paquetes después de eliminar los paquetes de Docker.

Las imágenes, contenedores, volúmenes o archivos de configuración personalizados de su host no se eliminan automáticamente. Para eliminar todas las imágenes, contenedores y volúmenes:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Eliminar lista de fuentes y llaveros:

sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.asc

Errores comunes y depuración

El demonio Docker no se inicia

Si el demonio de Docker no se inicia, puede deberse a varias razones, como problemas de configuración, conflictos con otros servicios o limitaciones de recursos del sistema. Para solucionar este problema, puede que vea mensajes de error como:

OutputFailed to start Docker Application Container Engine.

o

Outputdocker.service: Main process exited, code=exited, status=1/FAILURE

Para resolver este problema:

  1. Compruebe el estado del servicio Docker:sudo systemctl status docker
  2. Revise los registros de Docker para detectar errores:sudo journalctl -u docker
  3. Asegúrese de que el servicio Docker esté habilitado para iniciarse en el arranque:sudo systemctl enable docker
  4. Reinicie el servicio Docker:sudo systemctl restart docker

Errores de permisos al ejecutar comandos de Docker

Los errores de permisos ocurren cuando el usuario que ejecuta comandos de Docker no tiene suficientes privilegios. Para solucionar este problema, puede observar mensajes de error como:

Outputdocker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.

Para resolver este problema:

  1. Asegúrese de que el usuario sea parte del dockergrupo:sudo usermod -aG docker ${USER}
  2. Cierre sesión y vuelva a iniciarla para aplicar los cambios de membresía del grupo
  3. Alternativamente, utilice sudoantes de ejecutar los comandos de Docker:sudo docker <command>

Si sigue estos pasos, debería poder resolver errores comunes relacionados con el demonio Docker que no se inicia y errores de permisos al ejecutar comandos Docker.

Preguntas frecuentes

¿Cómo instalo Docker en Ubuntu 22.04?

Para instalar Docker en Ubuntu , siga estos pasos:

  1. Actualice su lista de paquetes:sudo apt update
  2. Instalar los paquetes necesarios:sudo apt install apt-transport-https ca-certificates curl software-properties-common
  3. Agregue la clave GPG de Docker:curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  4. Agregue el repositorio de Docker: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
  5. Actualice su lista de paquetes nuevamente:sudo apt update
  6. Instalar Docker:sudo apt install docker-ce

¿Cómo verifico que Docker esté instalado en Ubuntu?

Para verificar que Docker esté instalado en Ubuntu, ejecute el siguiente comando:sudo systemctl status docker

Este comando le mostrará el estado del servicio Docker. Si Docker está instalado y en ejecución, debería ver un resultado que indique que el servicio está activo y en ejecución. A continuación, se muestra un ejemplo de lo que podría ver:

Output● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2025-04-08 21:30:25 UTC; 22s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 7854 (dockerd)
      Tasks: 7
     Memory: 38.3M
        CPU: 340ms
     CGroup: /system.slice/docker.service
             └─7854 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

¿Cómo ejecuto Docker sin sudo?

Para ejecutar Docker sin usar sudo, debes agregar tu usuario al dockergrupo. Así es como se hace:

  1. Añade tu usuario al dockergrupo:sudo usermod -aG docker ${USER}
  2. Cierre sesión y vuelva a iniciarla para aplicar los cambios.

Después de agregar su usuario al dockergrupo, debería poder ejecutar comandos de Docker sin usar sudo.

¿Cómo desinstalo Docker de Ubuntu?

Para desinstalar Docker de Ubuntu , siga estos pasos:

  1. Detener el servicio Docker:sudo systemctl stop docker
  2. Eliminar paquetes de Docker:sudo apt purge docker-ce
  3. Eliminar dependencias de Docker:sudo apt autoremove
  4. Eliminar el repositorio de Docker:sudo rm /etc/apt/sources.list.d/docker.list

Conclusión

En este tutorial, instalaste Docker, trabajaste con imágenes y contenedores, y subiste una imagen modificada a Docker Hub. Ahora que conoces los conceptos básicos, explora. Para configuraciones de Docker más avanzadas, considera los siguientes tutoriales:

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post