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
sudo
no 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 apt
utilizar 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-ce
no 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, docker
veremos cómo usar el comando.docker
Paso 2: Ejecutar el comando Docker sin sudo (opcional)
De forma predeterminada, el docker
comando 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 docker
comando sin prefijarlo con sudo
o 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 sudo
cada vez que ejecuta el docker
comando, agregue su nombre de usuario al docker
grupo:
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 docker
grupo 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 docker
comando como usuario del grupo Docker . Si no lo hace, anteponga “<nombre del usuario>” a los comandos sudo
.
Exploremos el docker
comando a continuación.
Paso 3: Uso del comando Docker
Usar docker
consiste 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-world
imagen 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 docker
comando con el search
subcomando. 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 pull
subcomando.
Ejecute el siguiente comando para descargar la ubuntu
imagen 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 run
subcomando. Como vio en el hello-world
ejemplo, si no se ha descargado una imagen al docker
ejecutar el run
subcomando, 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-world
contenedor 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 exit
en 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-world
imagen y otro desde la ubuntu
imagen. Ambos contenedores ya no se ejecutan, pero aún existen en tu sistema.
Para ver todos los contenedores (activos e inactivos), ejecute docker ps
el -a
interruptor:
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 -l
interruptor:
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 ps
para 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 rm
comando, usando nuevamente el ID o el nombre del contenedor. Use el docker ps -a
comando para encontrar el ID o el nombre del contenedor asociado a la hello-world
imagen y elimínelo.
docker rm adoring_kowalevski
Puedes crear un nuevo contenedor y asignarle un nombre con el --name
modificador. También puedes usarlo --rm
para crear un contenedor que se elimine automáticamente al detenerse. Consulta el docker run help
comando 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 rm
comando, 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_id
Es 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, repository
suele 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-nodejs
se muestra la nueva imagen, derivada de la ubuntu
imagen 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-nodejs
imagen 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.

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 login
y 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-docker2
paquete, 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-docker2
paquete:
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 --gpus
indicador 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-smi
comando 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 docker
para enumerar todos los paquetes Docker instalados. - Eliminar el paquete Docker : utilice el comando
sudo apt remove docker-ce
para eliminar el paquete Docker. - Eliminar dependencias de Docker : use el comando
sudo apt autoremove
para eliminar cualquier dependencia que ya no sea necesaria. - Actualice su lista de paquetes : use el comando
sudo apt update
para 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:
- Compruebe el estado del servicio Docker:
sudo systemctl status docker
- Revise los registros de Docker para detectar errores:
sudo journalctl -u docker
- Asegúrese de que el servicio Docker esté habilitado para iniciarse en el arranque:
sudo systemctl enable docker
- 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:
- Asegúrese de que el usuario sea parte del
docker
grupo:sudo usermod -aG docker ${USER}
- Cierre sesión y vuelva a iniciarla para aplicar los cambios de membresía del grupo
- Alternativamente, utilice
sudo
antes 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:
- Actualice su lista de paquetes:
sudo apt update
- Instalar los paquetes necesarios:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
- 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
- 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
- Actualice su lista de paquetes nuevamente:
sudo apt update
- 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 docker
grupo. Así es como se hace:
- Añade tu usuario al
docker
grupo:sudo usermod -aG docker ${USER}
- Cierre sesión y vuelva a iniciarla para aplicar los cambios.
Después de agregar su usuario al docker
grupo, debería poder ejecutar comandos de Docker sin usar sudo
.
¿Cómo desinstalo Docker de Ubuntu?
Para desinstalar Docker de Ubuntu , siga estos pasos:
- Detener el servicio Docker:
sudo systemctl stop docker
- Eliminar paquetes de Docker:
sudo apt purge docker-ce
- Eliminar dependencias de Docker:
sudo apt autoremove
- 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: