Docker Engine en Windows

Se aplica a: Windows Server 2022, Windows Server 2019, Windows Server 2016

El cliente y el motor de Docker no se incluyen con Windows y deberán instalarse y configurarse por separado. Además, el motor de Docker puede aceptar varias configuraciones personalizadas. Algunos ejemplos incluyen la configuración de cómo acepta el demonio las solicitudes entrantes, las opciones de red predeterminadas y la configuración de registro y depuración. En Windows, estas configuraciones pueden especificarse en un archivo de configuración o mediante el Administrador de control de servicios de Windows. En este documento se detalla cómo instalar y configurar el motor de Docker. Además, se proporcionan algunos ejemplos de configuraciones frecuentes.

Instalar Docker

Se necesita Docker para trabajar con contenedores de Windows. Docker está formado por el motor de Docker (dockerd.exe) y el cliente de Docker (docker.exe). La forma más fácil de instalar todo se encuentra en la guía de inicio rápido, que te ayudará a preparar todo el equipo y ejecutar el primer contenedor.

Para instalaciones con script, consulta Uso de un script para instalar Docker EE.

Antes de poder usar Docker, deberás instalar las imágenes de contenedor. Para obtener más información, consulta los documentos para nuestras imágenes base de contenedor.

Configuración de Docker con un archivo de configuración

El método preferido para configurar el motor de Docker en Windows es usar un archivo de configuración. El archivo de configuración se encuentra en 'C:\ProgramData\Docker\config\daemon.json'. Puedes crear este archivo si aún no existe.

Nota

No todas las opciones de configuración de Docker disponibles se pueden aplicar a Docker en Windows. En el ejemplo siguiente, se muestran las opciones de configuración que se aplican. Para información sobre la configuración del motor de Docker, consulta Archivo de configuración de demonio de Docker.

{
    "authorization-plugins": [],
    "dns": [],
    "dns-opts": [],
    "dns-search": [],
    "exec-opts": [],
    "storage-driver": "",
    "storage-opts": [],
    "labels": [],
    "log-driver": "",
    "mtu": 0,
    "pidfile": "",
    "data-root": "",
    "cluster-store": "",
    "cluster-advertise": "",
    "debug": true,
    "hosts": [],
    "log-level": "",
    "tlsverify": true,
    "tlscacert": "",
    "tlscert": "",
    "tlskey": "",
    "group": "",
    "default-ulimits": {},
    "bridge": "",
    "fixed-cidr": "",
    "raw-logs": false,
    "registry-mirrors": [],
    "insecure-registries": [],
    "disable-legacy-registry": false
}

Solo necesitas agregar los cambios de configuración deseados al archivo de configuración. Por ejemplo, en este ejemplo se configura el motor de Docker para que acepte las conexiones entrantes a través del puerto 2375. Las demás opciones de configuración usarán los valores predeterminados.

{
    "hosts": ["tcp://0.0.0.0:2375"]
}

Del mismo modo, en este ejemplo se configura el demonio de Docker para mantener las imágenes y los contenedores en una ruta alternativa. Si no se especifica, el valor predeterminado es c:\programdata\docker.

{   
    "data-root": "d:\\docker"
}

En este ejemplo se configura el demonio de Docker para aceptar únicamente conexiones seguras a través del puerto 2376.

{
    "hosts": ["tcp://0.0.0.0:2376", "npipe://"],
    "tlsverify": true,
    "tlscacert": "C:\\ProgramData\\docker\\certs.d\\ca.pem",
    "tlscert": "C:\\ProgramData\\docker\\certs.d\\server-cert.pem",
    "tlskey": "C:\\ProgramData\\docker\\certs.d\\server-key.pem",
}

Configuración de Docker en Docker Service

El motor de Docker también se puede configurar modificando el servicio de Docker con sc config. Con este método, se establecen marcas de motor de Docker directamente en el servicio de Docker. Ejecute el siguiente comando en un símbolo del sistema (cmd.exe, no PowerShell):

sc config docker binpath= "\"C:\Program Files\docker\dockerd.exe\" --run-service -H tcp://0.0.0.0:2375"

Nota

No es necesario ejecutar este comando si el archivo daemon.json ya contiene la entrada "hosts": ["tcp://0.0.0.0:2375"].

Configuración común

Los siguientes ejemplos de archivos de configuración muestran configuraciones de Docker comunes. Esta configuración se puede combinar en un único archivo de configuración.

Creación de red predeterminada

Para configurar el motor de Docker para que no se cree una red NAT predeterminada, usa lo siguiente.

{
    "bridge" : "none"
}

Para obtener más información, vea Administrar redes de Docker.

Definición del grupo de seguridad de Docker

Si has iniciado sesión en el host de Docker y ejecutas comandos de Docker de forma local, estos se ejecutan a través de una canalización con nombre. De forma predeterminada, solo los miembros del grupo de administradores pueden tener acceso al motor de Docker a través de la canalización con nombre. Para especificar un grupo de seguridad que tiene este acceso, use la marca group.

{
    "group" : "docker"
}

Configuración de proxy

Para establecer la información del proxy para docker search y docker pull, cree una variable de entorno de Windows con el nombre HTTP_PROXY o HTTPS_PROXY y un valor de información del proxy. Esto se puede completar con PowerShell mediante un comando similar al siguiente:

[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://username:password@proxy:port/", [EnvironmentVariableTarget]::Machine)

Una vez que se ha establecido la variable, reinicie el servicio Docker.

Restart-Service docker

Para más información, consulta Archivo de configuración de Windows en Docker.com.

Desinstalación de Docker

En esta sección te indicamos cómo desinstalar Docker y realizar una limpieza completa de componentes del sistema Docker del sistema Windows 10 o Windows Server 2016.

Nota

Debes ejecutar todos los comandos incluidos en estas instrucciones desde una sesión de PowerShell con privilegios elevados.

Preparación del sistema para quitar Docker

Antes de desinstalar Docker, asegúrate de que no haya contenedores en ejecución en el sistema.

Ejecuta los siguientes cmdlets para comprobar los contenedores en ejecución:

# Leave swarm mode (this will automatically stop and remove services and overlay networks)
docker swarm leave --force

# Stop all running containers
docker ps --quiet | ForEach-Object {docker stop $_}

También recomendamos eliminar todos los contenedores, imágenes de contenedor, redes y volúmenes del sistema antes de eliminar Docker. Puedes realizarlo usando el siguiente cmdlet:

docker system prune --volumes --all

Desinstalar Docker

A continuación, deberás desinstalar realmente Docker.

Para desinstalar Docker en Windows 10

  • Ve a Configuración>Aplicaciones en la máquina Windows 10
  • En Aplicaciones y características, busca Docker para Windows
  • Ve a Docker para Windows>Desinstalar

Para desinstalar Docker en Windows Server 2016:

Desde una sesión con privilegios elevados de PowerShell, usa los cmdlets Uninstall-Package y Uninstall-Module para eliminar el módulo Docker y su correspondiente Proveedor de administración de paquetes de tu sistema, como se muestra en el ejemplo siguiente:

Uninstall-Package -Name docker -ProviderName DockerMsftProvider
Uninstall-Module -Name DockerMsftProvider

Sugerencia

Puedes encontrar el Proveedor de paquetes que usaste para instalar Docker con PS C:\> Get-PackageProvider -Name *Docker*

Limpieza de componentes del sistema y datos de Docker

Después de desinstalar Docker, deberás quitar las redes predeterminadas de Docker para que su configuración no permanezca en el sistema después de que hayas eliminado Docker. Puedes realizarlo usando el siguiente cmdlet:

Get-HNSNetwork | Remove-HNSNetwork

Para quitar las redes predeterminadas de Docker en Windows Server 2016.

Get-ContainerNetwork | Remove-ContainerNetwork

Ejecuta el cmdlet siguiente para quitar del sistema los datos del programa de Docker:

Remove-Item "C:\ProgramData\Docker" -Recurse

También puedes eliminar las características opcionales de Windows asociadas a Docker o los contenedores en Windows.

Esto incluye la característica "Contenedores", que se habilita automáticamente en Windows 10 o Windows Server 2016 cuando se instala Docker. También puede incluir la característica "Hyper-V", que se habilita automáticamente en Windows 10 cuando Docker está instalado, pero debe estar habilitado de forma explícita en Windows Server 2016.

Importante

La característica Hyper-V es una característica de virtualización general que habilita mucho más que solo contenedores. Antes de deshabilitar la característica Hyper-V, asegúrate de que no hay otros componentes virtualizados en el sistema que la necesiten.

Para quitar características de Windows en Windows 10:

  • Ve a Panel de control>Programas>Programas y características>Activar o desactivar las características de Windows.
  • Busca el nombre de la características o características que te gustaría deshabilitar, en este caso, Contenedores y (de forma opcional) Hyper-V.
  • Desactiva la casilla junto al nombre de la característica que quieres deshabilitar.
  • Selecciona "Aceptar" .

Para quitar las características de Windows en Windows Server 2016:

Desde una sesión con privilegios elevados de PowerShell, usa los siguientes cmdlets para deshabilitar las características Contenedores y (de forma opcional) Hyper-V del sistema:

Remove-WindowsFeature Containers
Remove-WindowsFeature Hyper-V

Reinicio del sistema

Para finalizar la desinstalación y la limpieza, ejecuta el siguiente cmdlet desde una sesión de PowerShell con privilegios elevados para reiniciar el sistema:

Restart-Computer -Force