Si es nuevo en contenedores y Docker y trabaja principalmente en Windows, le espera una sorpresa. En este artículo, aprenderá cómo configurar Docker en Windows 10 usando Docker Desktop para Windows o simplemente denominado Docker Desktop. en este artículo.
Docker Desktop es Docker Engine y un cliente de administración empaquetados juntos para un uso sencillo en Windows 10. En este artículo, instalará Docker Desktop, implementará su primer contenedor y compartirá datos entre su host y sus contenedores.
Requisitos previos para Docker en Windows
Este es un artículo de guía que muestra varios pasos en Docker Desktop para Docker en Windows. Para continuar, asegúrese de tener algunos requisitos específicos establecidos primero.
- Una conexión a Internet para descargar más de 800 MB de datos
- Windows 10 de 64 bits con las ediciones Pro, Enterprise o Education con la versión 1703 o posterior. Esto es necesario para ejecutar Hyper-V en Windows 10.
- Una CPU compatible con SLAT (paginación anidada). Todos los procesadores AMD/Intel desde aproximadamente 2008 son compatibles con SLAT
- Al menos 4 GB de RAM
- La virtualización de hardware BIOS a veces se etiqueta como Tecnología de virtualización o VTx . Esto debe estar habilitado y mostrarse como Habilitado en la pestaña de rendimiento del Administrador de tareas como se muestra a continuación.
Descargando e instalando Docker Desktop
Primero, debe descargar e instalar Docker Desktop para que Docker funcione en Windows. Docker Desktop está disponible en dos versiones; una versión estable y una versión de prueba.
La versión estable se publica trimestralmente y garantiza una aplicación completamente probada. En este artículo, utilizará la versión estable.
Advertencia:Tras la instalación, Docker Desktop le pedirá que instale el hipervisor Hyper-V si aún no está instalado. Al hacerlo, el hipervisor Hyper-V evita que cualquier hipervisor en modo usuario, como VirtualBox, VMWare, etc., ejecute máquinas virtuales invitadas. El soporte de Hyper-V para VirtualBox y VMWare es limitado pero está por llegar.
También tiene la opción de una fuente de descarga mediante la descarga manual de Docker Desktop directamente desde Docker.com o mediante el administrador de paquetes de Windows, Chocolatey. Analicemos brevemente cada método.
De Docker.com
Para descargar Docker Desktop directamente desde docker.com, puede ir a la página del producto, registrarse para obtener una cuenta y descargarlo desde allí. Esto es preferible si tiene la intención de utilizar Docker en producción mediante el registro de una cuenta.
Sin embargo, si solo está probando Docker por primera vez, también puede descargarlo directamente, lo que es mucho más fácil.
Una vez que se descargue el EXE, ejecute el ejecutable y haga clic en las indicaciones para aceptar todos los valores predeterminados.
Cuando se le preguntó si planea Usar contenedores de Windows en lugar de contenedores de Linux , como se muestra a continuación, no active la casilla de verificación. Utilizará contenedores de Linux en este artículo.
Una vez completada la instalación, reinicie su computadora.
Al seleccionar la opción para usar contenedores de Windows o contenedores de Linux, se le indica a Docker que adjunte imágenes a un kernel de Windows o Linux. Puede cambiar esta configuración en cualquier momento después de la instalación haciendo clic con el botón derecho en el icono de Docker en la bandeja del sistema y seleccionando Cambiar a contenedores de Windows como se muestra a continuación.
Usando Chocolatey
La otra opción para descargar e instalar Docker Desktop es con Chocolatey. Chocolatey automatiza muchas de las tareas de descarga/instalación por usted. Para hacerlo, abra una consola de línea de comandos (ya sea cmd o PowerShell) como administrador para descargar e instalar el programa de una sola vez ejecutando el siguiente comando.
choco install docker-desktop
Una vez completado, reinicie Windows 10.
Si desea probar la versión de prueba en algún momento, puede descargarla e instalarla ejecutando
choco install docker-desktop --pre
.
Validación de la instalación de Docker Desktop
Una vez instalado, Docker Desktop se ejecuta automáticamente como un servicio que proporciona Docker en Windows. Se muestra en la bandeja del sistema cuando inicia sesión en Windows después de reiniciar. Pero, ¿cómo sabes realmente que está funcionando?
Para validar que Docker Desktop funciona correctamente, abra una consola de línea de comandos y ejecute docker
dominio. Si la instalación salió bien, verá una referencia de comando de Docker.
Finalmente, haga que Docker descargue y ejecute una imagen de contenedor de ejemplo llamada hello-world ejecutando el comando docker run hello-world
. Si todo está bien, verá un resultado como el siguiente.
Ejecución de comandos en contenedores Docker
Docker Desktop está instalado y ha verificado que todo está bien. ¿Ahora que? Para comenzar con Docker en Windows, una tarea común para realizar en un contenedor de Docker es ejecutar comandos. A través de docker run
comando, puede enviar comandos a través del host (su PC con Windows 10) directamente a un contenedor en ejecución.
Para ejecutar comandos en un contenedor con docker run
, primero especificará un nombre de imagen seguido del comando. Para comenzar, dígale a Docker que ejecute el comando hostname
dentro de un contenedor llamado alpine como se ve a continuación.
> docker run alpine hostname
b74ff46601af
Ya que no tienes el alpine Docker en su computadora ahora, Docker en Windows descargará la imagen diminuta de Docker Hub, traerá un contenedor de esa imagen y enviará el comando directamente al contenedor y lo apagará todo de una sola vez.
Si desea mantener el contenedor en ejecución, también puede usar -it
parámetro. Este parámetro le dice a Docker que mantenga el contenedor en "modo interactivo" dejándolo ejecutándose en primer plano después de ejecutar el comando. Verá que luego se le presenta un indicador de terminal listo para usar.
> docker run -it alpine sh
/ #
Cuando termines en la terminal, escribe exit
para volver a Windows 10.
Acceder a archivos desde el host Docker en contenedores
Otra tarea común es acceder a archivos de host desde contenedores. Para acceder a archivos host en contenedores, Docker en Windows le permite vincular una ruta de carpeta desde su escritorio para compartir esa carpeta con su contenedor. Este proceso se llama vinculación .
Para crear un enlace, cree una carpeta en una unidad local. Para este ejemplo, usaré E:\ y llámelo entrada. Luego creará un nuevo documento de texto llamado archivo.txt en la carpeta. Siéntete libre de usar cualquier ruta y archivo que desees.
Una vez que tenga la carpeta que le gustaría compartir entre el host y el contenedor, Docker necesita montar la carpeta usando --mount
parámetro. El --mount
el parámetro requiere tres argumentos; un tipo de montaje, una ruta del directorio del host de origen y una ruta del directorio de destino. La ruta de destino será un enlace simbólico dentro del contenedor.
A continuación, verá un ejemplo de cómo montar todo el E:\ dentro del host de Windows 10 para que aparezca como /home/TEST directorio dentro del contenedor de Linux.
> docker run --mount type=bind,source="E:/",target=/home/TEST -it alpine
Cuando intente montar una carpeta de host, Docker Desktop le pedirá permiso para compartir esta unidad con los contenedores de Docker, como se ve a continuación.
Si creó el archivo.txt archivo en la carpeta de Windows 10 como se describió anteriormente, ejecute cat /home/TEST/input/file.txt
. Verás que se muestran los contenidos.
Ahora, elimine la entrada carpeta que acaba de crear y ejecute el cat ...
comando de nuevo. Observe que el shell ahora informa que el archivo ya no existe.
Asignación de puertos de red
Otro concepto importante que debe saber es cómo Docker en Windows maneja las redes. Para una breve introducción, veamos qué se necesita para acceder a un servicio web que se ejecuta en un contenedor desde el host local.
Primero, active una imagen de demostración que ejecutará una página web de ejemplo. Descargue y ejecute la imagen de Docker llamada dockersamples/static-site . Usará docker container run
para hacerlo.
El siguiente comando realiza cuatro acciones a la vez:
- Descarga una imagen de Docker desde Docker Hub llamada static-site en las docker-muestras "directorio"
- Inicia una instancia de contenedor desde el sitio estático imagen
- Separa inmediatamente el contenedor del primer plano de la terminal (
—detach
) - Hace que los puertos de red del contenedor en ejecución sean accesibles para el host de Windows 10 (
—publish-all
) )
docker container run --detach --publish-all dockersamples/static-site
## Alternate/shorthand syntax that does the same thing:
## docker container run -d -P dockersamples/static-site
## docker run -d -P dockersamples/static-site
Una vez ejecutado, Docker devolverá el ID del contenedor que se muestra a continuación.
Puertos de red de publicación
Desde que usé --publish-all
parámetro, los puertos de host locales ahora están asignados a la pila de red del contenedor. Puedes usar el docker ps
subcomando para enumerar todos los contenedores en ejecución, incluidos los puertos asignados a todos los contenedores en ejecución. En el caso siguiente, un contenedor ejecuta la asignación del puerto de host 32777 al puerto de contenedor 80 y del puerto de host 32776 al puerto de contenedor 443.
Docker en Windows asigna contenedores a puertos aleatorios cuando se usa --publish-all
parámetro a menos que los defina explícitamente.
Ahora abra un navegador web y navegue hasta http://localhost:32777 o el puerto que Docker asignó para asignar al puerto 80 como resultado de docker ps
. Si todo va bien, debería ver aparecer la siguiente página web.
Cambiando los Puertos Publicados
Ahora tiene un contenedor de Docker que se ejecuta en Docker en Windows y ofrece una página web simple. ¡Felicidades! Pero ahora necesita especificar un enlace de puerto específico que no dependa de la selección aleatoria de puertos con --publish-all
. No hay problema. Usa el -p
parámetro.
Primero, detenga el contenedor en ejecución especificando una cadena única de su ID de contenedor. Puede encontrar este ID de contenedor ejecutando docker ps
. Una vez que conozca el ID del contenedor, deténgalo e inicie uno nuevo mientras designa a Docker para que asigne un puerto específico para publicar.
La sintaxis para especificar un puerto es <external port>:<container port>
. Para cada puerto que desee publicar, use --publish
o -p
cambiar con los números de puerto externo y contenedor como se muestra a continuación.
> docker stop f766
> docker run --detach -p 1337:80 dockersamples/static-site
Cuando especifica un ID de contenedor, solo tiene que escribir lo suficiente del ID para que sea único. Si solo está ejecutando un único contenedor y su ID es
f766f4ac8d66bf7
, puede identificar el contenedor usando cualquier cantidad de caracteres, incluidos solof
. El requisito es que cualquier cosa que escriba le permita identificar de forma única un solo contenedor.
Ahora ve a tu navegador web y navega hasta localhost:1337
. Recuerde, no está cambiando la imagen y siempre escucha en el puerto 80; está cambiando la regla de conversión de puertos en la configuración de Docker que le permite conectarse al contenedor.
Deteniendo todos los Contenedores
Usando docker stop
, puede detener un contenedor, pero ¿cómo detiene varios contenedores a la vez? Una forma de hacerlo es proporcionando varias ID de contenedor delimitadas por espacios. Puede ver a continuación un ejemplo de cómo detener tres contenedores con ID de fd50b0a446e7
, 36ee57c3b7da
y 7c45664906ff.
> docker stop fd50 36ee 7c45
Si está administrando contenedores de Docker en PowerShell, también puede usar un acceso directo para detener todos los contenedores. Alimente una lista de ID de contenedores a través de
docker ps -q
al parámetro de parada a través de la expansión de comandos de PowerShelldocker stop (docker ps -q)
.
Confirme que todos los contenedores estén detenidos al no ver ningún contenedor en la lista cuando escriba docker ps
.
Limpieza
Ha descargado algunas imágenes de contenedores y ha ejecutado algunos contenedores que ahora están detenidos. Aunque están detenidos, su almacenamiento asignado no desaparece del disco del host local. Debe eliminar los contenedores para liberar ese espacio y evitar abarrotar su espacio de trabajo.
Para eliminar un solo contenedor, use el contenedor remove rm
parámetro como a continuación.
> docker container rm <container ID>
O bien, para eliminar todos los contenedores detenidos, utilice la función prune
parámetro como se muestra a continuación.
> docker container prune