Preparando Docker
Ya conocemos las piezas de Docker. Ahora vamos a preparar el equipo y responder a una pregunta práctica: ¿podemos utilizar el cliente para pedir al motor que ejecute un contenedor?
No basta con tener una aplicación instalada. Haremos tres comprobaciones, cada una con un propósito:
¿Está disponible el cliente?
↓
¿Puede comunicarse con el motor?
↓
¿Podemos ejecutar un contenedor de prueba?
Al terminar sabrás qué funciona en tu equipo y qué pieza revisar si alguna comprobación falla.
Elige el camino para tu equipo
En este curso trabajaremos con contenedores Linux. La forma de preparar su entorno depende del sistema operativo de tu ordenador:
| Tu sistema | Camino que seguiremos |
|---|---|
| Windows | Docker Desktop, que integra las herramientas y proporciona un entorno Linux mediante virtualización. |
| macOS | Docker Desktop, con una descarga adecuada para el procesador del Mac. |
| Linux | Docker Engine y la CLI instalados directamente en el sistema. Docker Desktop existe, pero no es obligatorio. |
Los ejemplos específicos de Linux toman como referencia Ubuntu con systemd, el gestor de servicios que utilizaremos para consultar el estado del motor. Si usas otra distribución, sigue su procedimiento de instalación y comprueba si utiliza ese mismo gestor.
Las comprobaciones con el cliente Docker serán las mismas en los tres caminos. Sigue solo la preparación que corresponda a tu equipo. Si ya tienes Docker preparado, puedes pasar a comprobar el cliente antes de decidir si necesitas instalar algo.
Antes de descargar
Necesitarás conexión para descargar el software y obtener la imagen de prueba, espacio disponible y los permisos que pida la instalación elegida. Revisa también que tu sistema y tu procesador estén admitidos por la documentación oficial.
En Docker Desktop pueden existir requisitos de memoria, versión del sistema y virtualización. La virtualización permite disponer del entorno Linux necesario dentro de Windows o macOS. Los requisitos concretos pueden cambiar: compruébalos antes de instalar.
Usaremos la documentación oficial para los pasos que dependen de versiones e instaladores. Aquí nos centraremos en qué queremos obtener y cómo comprobarlo, para no depender de los botones de una edición concreta.
Prepara Docker según tu sistema
Windows: Docker Desktop
- Abre la página oficial Obtener Docker y sigue el enlace de Docker Desktop para Windows.
- Revisa los requisitos para tu versión de Windows y sigue el procedimiento vigente de descarga e instalación. El objetivo es disponer de la CLI y de un motor preparado para ejecutar contenedores Linux.
- Inicia Docker Desktop y espera a que indique que su entorno está preparado. Completar la instalación no significa que el motor ya esté iniciado.
Durante la preparación puede aparecer WSL 2, una función de Windows que permite ejecutar un entorno Linux y que Docker Desktop puede utilizar como base. Si el procedimiento elegido lo requiere, sigue las indicaciones oficiales para prepararlo. No todas las versiones y configuraciones de Windows utilizan exactamente el mismo camino.
Si Desktop avisa de que falta un requisito de virtualización o del sistema, resuélvelo siguiendo esa guía antes de continuar. Para este recorrido necesitamos el entorno de contenedores Linux.
Después abre una nueva ventana de PowerShell para realizar las comprobaciones. No necesitas aprender a gestionar contenedores desde la interfaz gráfica de Desktop.
macOS: Docker Desktop
Desde Obtener Docker, entra en Docker Desktop para Mac. Comprueba los requisitos de macOS y elige la descarga correspondiente al procesador de tu equipo: Apple Silicon o Intel, según las opciones admitidas en la guía actual.
Sigue la instalación oficial, inicia Docker Desktop y espera a que su entorno esté preparado. Desktop integra las herramientas de Docker y el entorno Linux necesario para este recorrido.
Abre una nueva ventana de Terminal. A partir de aquí utilizaremos comandos para comprobar el cliente y el motor, igual que en los otros sistemas.
Linux: Docker Engine directamente
En Linux no necesitamos Desktop para ejecutar Docker Engine sobre el sistema. Queremos instalar el motor y el cliente, no únicamente disponer del comando docker.
- Abre la guía oficial de instalación de Docker Engine.
- Selecciona tu distribución. Para nuestro ejemplo de referencia, elige Ubuntu y comprueba que tu versión y arquitectura están admitidas.
- Sigue el procedimiento oficial para instalar Engine y la CLI. Lee los requisitos y las indicaciones sobre instalaciones anteriores antes de modificar paquetes.
- Vuelve a esta lección para comprobar el cliente, el servicio y la comunicación con el motor desde una terminal.
No hay una secuencia de paquetes universal para todo Linux. Una distribución puede ofrecer sus propios paquetes de Docker, mantenidos por ella y con diferencias respecto a los oficiales de Docker. Para este recorrido seguiremos el procedimiento de Docker para la distribución elegida; no mezcles instrucciones de ambos orígenes.
Si ya hay una instalación en el equipo, comprueba qué tienes antes de sustituirla. El objetivo es conseguir un entorno funcional, no reinstalarlo por rutina.
Comprueba el cliente
En tu terminal, escribe este comando y pulsa Enter:
docker --version
docker llama al cliente y --version le pide que muestre su versión. La salida tendrá una forma parecida a esta:
Docker version …, build …
Los puntos representan los números e identificadores que aparecerán en tu instalación; no tienes que obtener una versión concreta para reconocer la respuesta.
¿Qué hemos demostrado? Que esa terminal encuentra y puede ejecutar la CLI de Docker.
Si el sistema indica que no reconoce el comando, revisa la instalación del cliente y abre una nueva terminal si acabas de instalarlo. Puede que no esté instalado o que no esté en el PATH, la lista de ubicaciones donde el sistema busca los programas.
Antes de seguir, piensa: si vemos la versión, ¿podemos asegurar que el motor está funcionando?
No. Esta consulta la responde el cliente sin necesitar comunicarse con el daemon. Falta comprobar la otra parte.
Comprueba la comunicación con el motor
Ahora pide información sobre el entorno Docker:
docker info
Este comando necesita consultar al motor. La salida puede ser larga; por ahora busca estas partes:
| Parte de la respuesta | Qué nos interesa |
|---|---|
Client | Información del cliente. Por sí sola no demuestra conexión con el motor. |
Server | Información del motor que ha respondido, como su versión y sistema. |
Containers e Images | Cantidades de contenedores e imágenes gestionados por ese motor. Los valores pueden variar. |
Comprueba que hay información real del servidor y que no aparece un error al consultarlo. Ver solo el encabezado Server no basta. Si aparece OSType, para nuestro recorrido debe indicar linux.
Cuando la consulta termina correctamente, hemos comprobado que el cliente puede comunicarse con el daemon y obtener información. Todavía queda probar la ejecución de un contenedor.
Si el cliente responde, pero el motor no
No reinstales todo inmediatamente. La CLI puede estar bien instalada y el motor estar detenido o no ser accesible.
- Con Docker Desktop: comprueba que la aplicación está iniciada y que el motor ha terminado de arrancar. Cerrar su ventana no siempre detiene Docker; salir de la aplicación sí puede dejar el motor no disponible.
- Con Engine instalado directamente en Linux: consulta el servicio como veremos a continuación. Si el error indica permisos insuficientes, revisa también el acceso de tu usuario.
Después de resolver la causa, repite docker info. Queremos comprobar el resultado del cambio, no darlo por solucionado.
Solo Linux: comprueba el servicio y los permisos
¿Está iniciado el servicio?
Un servicio es un programa gestionado por el sistema que puede funcionar en segundo plano. En nuestra instalación de referencia, el daemon de Docker se ejecuta como un servicio.
En Ubuntu con systemd y Engine instalado directamente, consulta su estado:
sudo systemctl status docker
systemctl consulta los servicios gestionados por systemd; status docker pide el estado del servicio Docker. sudo ejecuta esa consulta con privilegios de administración y puede pedir tu contraseña.
Si la salida indica que el servicio está activo y funcionando, el daemon está iniciado. Eso no garantiza por sí solo que tu usuario tenga permiso para acceder a él: compruébalo después con docker info.
Si está detenido, sigue las indicaciones de inicio del servicio de la guía de tu distribución. Iniciarlo ahora y configurar su inicio automático al encender el equipo son decisiones diferentes. Si ha fallado, revisa el motivo indicado antes de repetir la instalación. Si no se encuentra el servicio, comprueba qué motor has instalado.
Si la consulta abre una vista que ocupa la terminal, pulsa q para salir de ella.
Este paso corresponde a Engine instalado como servicio del sistema. No sirve para consultar el motor que proporciona Docker Desktop, ni tienes por qué encontrar ese servicio en una distribución WSL que utiliza Docker Desktop. En esos casos, comprueba Desktop. Si tu Linux no utiliza systemd, consulta el procedimiento equivalente de su documentación.
¿Tiene acceso tu usuario?
Un mensaje de permisos insuficientes al contactar con el daemon no significa necesariamente que Docker falte o esté detenido. Puede que tu usuario no tenga autorizado ese acceso.
En una instalación Linux donde el daemon funciona con privilegios de administrador, la guía oficial puede indicar que hagas una comprobación mediante sudo. Por ejemplo:
sudo docker info
Este comando hace la consulta como administrador. Tiene sentido cuando has identificado un problema de permisos en esa instalación y tienes autorización para administrarla. No es una solución universal para un comando ausente, un servicio detenido o un fallo de descarga.
Otra posibilidad es configurar el acceso mediante el grupo docker, pero no debemos tratarla como un paso inocuo:
Importante: pertenecer al grupo
dockerconcede privilegios equivalentes a los del administrador del sistema (root). Poder utilizar Docker sin escribirsudono significa disponer de menos privilegios.
Antes de cambiar ese acceso, lee la documentación oficial de permisos y pasos posteriores a la instalación. Decide conscientemente qué acceso corresponde a tu equipo; si es compartido o administrado por otra persona, consulta con quien lo gestiona.
No necesitas modificar grupos para demostrar que el motor responde. Utiliza la forma de acceso autorizada para tu instalación. Si esa forma requiere sudo, también lo necesitarás para la prueba siguiente; en Desktop no se añade sudo por rutina.
Primera prueba completa: hello-world
Con la comunicación comprobada, vamos a ejecutar un programa pequeño preparado para probar Docker.
Antes de hacerlo, anticipa el recorrido: ¿qué tendrá que hacer el daemon si todavía no dispone de la imagen necesaria?
Ejecuta:
docker run hello-world
Aquí docker es el cliente, run solicita crear e iniciar un contenedor y hello-world identifica la imagen de prueba que utilizaremos. En esta unidad usamos esa operación únicamente para validar el entorno.
En la instalación Linux que requiera acceso como administrador, la misma prueba se ejecuta así:
sudo docker run hello-world
Usa una de las dos formas, la que corresponda a los permisos que acabas de comprobar.
La primera vez puede aparecer información sobre la descarga de la imagen. Después verás un saludo parecido a:
Hello from Docker!
No necesitas memorizar el mensaje completo ni ejecutar las sugerencias adicionales que pueda mostrar. Fíjate en que el programa produce su mensaje y termina sin error.
¿Qué acabamos de comprobar?
En una preparación nueva, el recorrido habitual es:
La CLI envía la petición al daemon
↓
El daemon busca la imagen hello-world localmente
↓
Si no la tiene, la obtiene del registro
↓
Crea e inicia un contenedor a partir de esa imagen
↓
El programa muestra un mensaje
↓
La salida llega a nuestra terminal a través de Docker
↓
El programa termina y recuperamos la terminal
En la configuración habitual, esta imagen se obtiene de Docker Hub. Si ya estaba disponible localmente, no necesita descargarse para esta prueba. Una ejecución correcta con una imagen local no demuestra que la conexión al registro funcione en ese momento.
El saludo es útil por lo que ha tenido que ocurrir para producirlo: el cliente ha contactado con el daemon, el motor ha dispuesto de la imagen y ha podido crear y ejecutar el contenedor. También hemos recibido la salida del programa.
hello-world no es una instalación especial de Docker. Es un programa de prueba ejecutado dentro de un contenedor.
Ha terminado: ¿es un fallo?
No. Este programa solo tiene que mostrar su mensaje y terminar. Al finalizar el proceso principal, el contenedor deja de ejecutarse y recuperamos la terminal.
Terminar no significa fallar. Para esta prueba, ese es el resultado esperado. En la siguiente unidad aprenderemos a consultar los contenedores que siguen ejecutándose y los que ya han terminado.
Si algo falla, identifica en qué paso
Los mensajes exactos cambian entre versiones, sistemas e idiomas. Busca su significado y relaciónalo con la comprobación que estabas haciendo:
| Lo que observas | Qué sabemos | Qué revisar primero |
|---|---|---|
docker no se encuentra o no se reconoce. | La terminal no puede ejecutar el cliente. | Instalación de la CLI, nueva terminal y PATH. |
La versión aparece, pero docker info no conecta. | El cliente existe; no hemos demostrado acceso al motor. | Inicio de Desktop o estado del servicio, según la instalación. |
| Se deniega el acceso al daemon en Linux. | Puede faltar autorización para ese usuario. | Permisos de la instalación; no añadir privilegios a ciegas. |
| Desktop no termina de preparar su entorno. | La instalación puede estar incompleta o faltar un requisito. | Requisitos oficiales del sistema y de virtualización. |
| El motor responde, pero falla la obtención de la imagen. | La comunicación con el daemon funciona; la prueba completa aún no. | Conexión y acceso al registro indicado por el error. |
hello-world muestra el mensaje y termina sin error. | Hemos comprobado la ejecución de un contenedor de prueba. | El entorno está preparado para continuar. |
Instalado y funcionando no son lo mismo. Tampoco conviene copiar comandos de instalación antiguos para resolver cualquier fallo: vuelve a la guía oficial de tu sistema y revisa la pieza que señalan las comprobaciones.
Tu turno: el cliente responde, el motor no
Una compañera muestra la versión con docker --version, pero al ejecutar docker info recibe un error de conexión con el motor.
- ¿Qué parte sabemos que está disponible?
- ¿Podemos afirmar que Docker está preparado para ejecutar contenedores?
- Si utiliza Desktop y ha salido de la aplicación, ¿qué comprobarías?
- Si utiliza Engine directamente en Ubuntu, ¿qué consulta harías al servicio?
- Si el mensaje habla de permisos en lugar de conexión, ¿cambiaría tu diagnóstico?
Compara tu razonamiento
Sabemos que la CLI está disponible, pero falta demostrar que puede comunicarse con el daemon. Con Desktop comprobaríamos que esté iniciado y preparado. En el ejemplo de Ubuntu consultaríamos el servicio con sudo systemctl status docker.
Si el error indica permisos insuficientes, revisaríamos el acceso del usuario. No concluiríamos automáticamente que Docker no está instalado ni intentaríamos resolver cualquier error con sudo.
Mini reto: demuestra que tu entorno está preparado
Sin copiar una secuencia completa de esta página, elige qué comprobaciones necesitas y anota el resultado de cada una. Tu objetivo es demostrar que:
- tienes disponible el cliente;
- puedes comunicarte con el motor;
- puedes ejecutar el contenedor de prueba;
hello-worldmuestra su mensaje y termina correctamente.
Después responde:
- ¿Qué comando usaste para comprobar la CLI y qué demostró?
- ¿Qué comprobación confirmó que el motor era accesible?
- ¿Tuviste que iniciar Desktop o revisar un servicio? ¿Por qué correspondía ese camino a tu sistema?
- ¿Se descargó una imagen al ejecutar
hello-world? ¿Por qué pudo ser necesario, o por qué pudo no hacer falta? - ¿Por qué terminó el contenedor después del mensaje?
- Si hubo un error, ¿en qué paso apareció y qué pieza te indicó que debías revisar?
Una explicación completa distinguirá la respuesta local del cliente, la comunicación con el daemon y la ejecución real del programa. No basta con escribir «Docker está instalado».
El equipo está preparado: ¿qué hacemos con él?
Ya has unido las piezas que conocimos con tres pruebas: encontrar el cliente, consultar el motor y ejecutar un contenedor sencillo.
Ahora podemos pasar de comprobar Docker a trabajar con imágenes y contenedores. En la siguiente unidad aprenderemos a obtener imágenes y gestionar los contenedores que creemos a partir de ellas.