# Configurar la Gestión de Ajustes con un archivo JSON





La Gestión de Ajustes (Settings Management) te permite configurar e imponer los ajustes de Docker Desktop en toda tu organización utilizando un archivo `admin-settings.json`. Esto estandariza los entornos de Docker Desktop y garantiza configuraciones consistentes para todos los usuarios.

## Requisitos previos

Antes de comenzar, asegúrate de tener:

- La [imposición del inicio de sesión](/enterprise/security/enforce-sign-in/) habilitada para tu organización.
- Una suscripción de Docker Business.

La presencia del archivo `admin-settings.json` impone el inicio de sesión en Docker Desktop. Esto está diseñado para características empresariales que requieren autenticación.

Los usuarios deben iniciar sesión y formar parte de una organización de Docker Business. Si no se cumple alguna de estas condiciones, se ignora el archivo de configuración.

## Paso uno: Crear el archivo de ajustes

Puedes crear el archivo `admin-settings.json` de dos maneras:

- Utiliza la bandera del instalador `--admin-settings` para generar automáticamente el archivo:
  - Guía de instalación de [Mac](/desktop/setup/install/mac-install/#install-from-the-command-line)
  - Guía de instalación de [Windows](/desktop/setup/install/windows-install/#install-from-the-command-line)
- Créalo manualmente (UTF-8 sin BOM) y colócalo en las siguientes ubicaciones:
  - Mac: `/Library/Application Support/com.docker.docker/admin-settings.json`
  - Windows: `C:\ProgramData\DockerDesktop\admin-settings.json`
  - Linux: `/usr/share/docker-desktop/admin-settings.json`

> [!IMPORTANT]
>
> Coloca el archivo en un directorio protegido para evitar cambios no autorizados. Utiliza herramientas de Gestión de Dispositivos Móviles (MDM) como Jamf para distribuir el archivo a escala en toda tu organización.

## Paso dos: Configurar los ajustes

> [!TIP]
>
> Para obtener una lista completa de los ajustes disponibles, las plataformas admitidas y los métodos de configuración compatibles, consulta la [Referencia de ajustes](/enterprise/security/hardened-desktop/settings-management/configure-json-file/settings-reference/).

El archivo `admin-settings.json` utiliza claves estructuradas para definir los ajustes configurables y si los valores están impuestos.

Cada ajuste admite un campo `locked` (bloqueado) que controla los permisos del usuario:

- Cuando `locked` se establece en `true`, los usuarios no pueden cambiar ese valor en Docker Desktop, la CLI o los archivos de configuración.
- Cuando `locked` se establece en `false`, el valor actúa como una sugerencia predeterminada y los usuarios pueden actualizarlo.

Los ajustes donde `locked` se establece en `false` se ignoran en las instalaciones existentes si el usuario ya ha personalizado ese valor en `settings-store.json`, `settings.json` o `daemon.json`.

### Ajustes agrupados

Docker Desktop agrupa algunos ajustes con un único interruptor (toggle) que controla la sección completa. Estos incluyen:

- Aislamiento de Contenedores Mejorado (ECI): Utiliza un interruptor principal (`enhancedContainerIsolation`) que habilita/deshabilita toda la característica, con subajustes para configuraciones específicas.
- Kubernetes: Utiliza un interruptor principal (`kubernetes.enabled`) con subajustes para la configuración del clúster.
- Docker Scout: Agrupa los ajustes bajo el objeto `scout`.

Al configurar los ajustes agrupados:

1. Establece el interruptor principal para habilitar la característica.
2. Configura los subajustes dentro de ese grupo.
3. Cuando bloqueas el interruptor principal, los usuarios no pueden modificar ningún ajuste en ese grupo.

Ejemplo para `enhancedContainerIsolation`:

```json
"enhancedContainerIsolation": {
  "locked": true,  // Esto bloquea toda la sección de ECI
  "value": true,   // Esto habilita ECI
  "dockerSocketMount": {  // Estos son subajustes
    "imageList": {
      "images": ["docker.io/testcontainers/ryuk:*"]
    }
  }
}
```

### Ejemplo de archivo `admin-settings.json`

La siguiente muestra es un archivo `admin-settings.json` con los ajustes empresariales comunes configurados. Puedes utilizar este ejemplo como plantilla con las [configuraciones de `admin-settings.json`](#configuraciones-de-admin-settingsjson):

```json {collapse=true}
{
  "configurationFileVersion": 2,
  "exposeDockerAPIOnTCP2375": {
    "locked": true,
    "value": false
  },
  "proxy": {
    "locked": true,
    "mode": "system",
    "http": "",
    "https": "",
    "exclude": [],
    "windowsDockerdPort": 65000,
    "enableKerberosNtlm": false,
    "pac": "",
    "embeddedPac": ""
  },
  "containersProxy": {
    "locked": true,
    "mode": "manual",
    "http": "",
    "https": "",
    "exclude": [],
    "pac": "",
    "embeddedPac": "",
    "transparentPorts": ""
  },
  "enhancedContainerIsolation": {
    "locked": true,
    "value": true,
    "dockerSocketMount": {
      "imageList": {
        "images": [
          "docker.io/localstack/localstack:*",
          "docker.io/testcontainers/ryuk:*"
        ]
      },
      "commandList": {
        "type": "deny",
        "commands": ["push"]
      }
    }
  },
  "linuxVM": {
    "wslEngineEnabled": {
      "locked": false,
      "value": false
    },
    "dockerDaemonOptions": {
      "locked": false,
      "value": "{\"debug\": false}"
    },
    "vpnkitCIDR": {
      "locked": false,
      "value": "192.168.65.0/24"
    }
  },
  "kubernetes": {
    "locked": false,
    "enabled": false,
    "showSystemContainers": false,
    "imagesRepository": ""
  },
  "windowsContainers": {
    "dockerDaemonOptions": {
      "locked": false,
      "value": "{\"debug\": false}"
    }
  },
  "disableUpdate": {
    "locked": false,
    "value": false
  },
  "analyticsEnabled": {
    "locked": false,
    "value": true
  },
  "extensionsEnabled": {
    "locked": true,
    "value": false
  },
  "scout": {
    "locked": false,
    "sbomIndexing": true,
    "useBackgroundIndexing": true
  },
  "allowBetaFeatures": {
    "locked": false,
    "value": false
  },
  "blockDockerLoad": {
    "locked": false,
    "value": true
  },
  "filesharingAllowedDirectories": [
    {
      "path": "$HOME",
      "sharedByDefault": true
    },
    {
      "path": "$TMP",
      "sharedByDefault": false
    }
  ],
  "useVirtualizationFrameworkVirtioFS": {
    "locked": true,
    "value": true
  },
  "useVirtualizationFrameworkRosetta": {
    "locked": true,
    "value": true
  },
  "useGrpcfuse": {
    "locked": true,
    "value": true
  },
  "displayedOnboarding": {
    "locked": true,
    "value": true
  },
  "desktopTerminalEnabled": {
    "locked": false,
    "value": false
  },
  "enableInference": {
    "locked": false,
    "value": true
  },
  "enableInferenceTCP": {
    "locked": false,
    "value": true
  },
  "enableInferenceTCPPort": {
    "locked": true,
    "value": 12434
  },
  "enableInferenceCORS": {
    "locked": true,
    "value": ""
  },
  "enableInferenceGPUVariant": {
    "locked": true,
    "value": true
  },
  "portBindingBehavior": {
    "locked": true,
    "value": "default-port-binding"
  }
}
```

## Paso tres: Aplicar los ajustes

Los ajustes surten efecto después de reiniciar Docker Desktop y cuando el usuario inicia sesión.

Para nuevas instalaciones:

1. Abre Docker Desktop.
2. Inicia sesión con tu cuenta de Docker.

Para instalaciones existentes:

1. Cierra Docker Desktop por completo.
2. Vuelve a iniciar Docker Desktop.

> [!IMPORTANT]
>
> Debes cerrar completamente y volver a abrir Docker Desktop. Reiniciar desde el menú no es suficiente.

## Configuraciones de `admin-settings.json`

Las siguientes tablas describen todos los ajustes disponibles en el archivo `admin-settings.json`.

> [!NOTE]
>
> Algunos ajustes son específicos de la plataforma o requieren versiones mínimas de Docker Desktop. Revisa la columna Versión para conocer los requisitos.

### Ajustes generales

| Parámetro | SO | Descripción | Versión |
| :------------------------- | ------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- |
| `configurationFileVersion` | | Especifica la versión del formato del archivo de configuración. | |
| `analyticsEnabled` | | Si `value` se establece en false, Docker Desktop no envía estadísticas de uso a Docker. | |
| `disableUpdate` | | Si `value` se establece en true, se desactivan la búsqueda y las notificaciones de actualizaciones de Docker Desktop. | |
| `blockDockerLoad` | | Si `value` se establece en `true`, los usuarios ya no pueden ejecutar [`docker load`](/reference/cli/docker/image/load/) y reciben un error si lo intentan. | |
| `displayedOnboarding` | | Si `value` se establece en `true`, la encuesta de incorporación no se mostrará a los nuevos usuarios. Establecer `value` en `false` no tiene efecto. | |
| `desktopTerminalEnabled` | | Si `value` se establece en `false`, los desarrolladores no pueden usar la terminal de Docker para interactuar con la máquina host y ejecutar comandos directamente desde Docker Desktop. | |
| `exposeDockerAPIOnTCP2375` | Solo Windows | Expone la API de Docker en un puerto especificado. Si `value` se establece en true, la API de Docker se expone en el puerto 2375. Nota: Esto no está autenticado y solo debe habilitarse si está protegido por reglas de firewall adecuadas. | |
| `silentModulesUpdate` | | Si `value` se establece en `true`, Docker Desktop actualiza automáticamente los componentes que no requieren un reinicio. Por ejemplo, los componentes de la CLI de Docker o de Docker Scout. | |

### Extensiones

| Parámetro | SO | Descripción | Versión |
| :-------------------------------------------- | --- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| `extensionsEnabled` | | Si `value` se establece en false, se desactivan las extensiones de Docker. | |
| `onlyMarketplaceExtensions` | | Si `value` se establece en true, se bloquea a los desarrolladores la instalación de otras extensiones a través de la línea de comandos. | |
| `extensionsPrivateMarketplace` | | Si `value` se establece en true, se activa el mercado privado (private marketplace), lo que garantiza que Docker Desktop se conecte al contenido definido y controlado por el administrador en lugar del mercado público de Docker. | |
| `extensionsPrivateMarketplaceAdminContactURL` | | Define un enlace de contacto para que los desarrolladores soliciten nuevas extensiones en el mercado privado. | |

### Compartición de archivos y emulación

| Parámetro | SO | Descripción | Versión |
| :----------------------------------- | ---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- |
| `filesharingAllowedDirectories` | | Especifica a qué rutas pueden agregar recursos compartidos de archivos tus desarrolladores. También acepta `$HOME`, `$TMP` o `$TEMP` como variables de ruta (`path`). Cuando se añade una ruta, se permiten sus subdirectorios. Si `sharedByDefault` se establece en `true`, esa ruta se añadirá al restablecer los valores de fábrica o al iniciar Docker Desktop por primera vez. | |
| `useVirtualizationFrameworkVirtioFS` | Solo macOS | Si `value` se establece en `true`, se define VirtioFS como el mecanismo de compartición de archivos. Nota: Si tanto `useVirtualizationFrameworkVirtioFS` como `useGrpcfuse` tienen `value` en `true`, VirtioFS tiene precedencia. De igual manera, si ambos se establecen en `false`, se define osxfs como el mecanismo de compartición de archivos. | |
| `useGrpcfuse` | Solo macOS | Si `value` se establece en `true`, se define gRPC Fuse como el mecanismo de compartición de archivos. | |
| `useVirtualizationFrameworkRosetta` | Solo macOS | Si `value` se establece en `true`, Docker Desktop activa Rosetta para acelerar la emulación binaria de x86_64/amd64 en Apple Silicon. Nota: Esto también habilita automáticamente `Use Virtualization framework` (Usar framework de virtualización). | |

### Docker Scout

| Parámetro | SO | Descripción | Versión |
| :-------- | --- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| `scout` | | Establecer `useBackgroundIndexing` en `false` desactiva la indexación automática de las imágenes cargadas en el almacén de imágenes. Establecer `sbomIndexing` en `false` evita que los usuarios puedan indexar imágenes inspeccionándolas en Docker Desktop o utilizando los comandos de la CLI de `docker scout`. | |

### Ajustes del Proxy

| Parámetro | SO | Descripción | Versión |
| :------------------- | ------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- |
| `proxy` | | Si `mode` se establece en `system` en lugar de `manual`, Docker Desktop obtiene los valores del proxy del sistema e ignora cualquier valor establecido para `http`, `https` y `exclude`. Cambia `mode` a `manual` para configurar manualmente los servidores proxy. Si el puerto del proxy es personalizado, especifícalo en la propiedad `http` o `https`, por ejemplo `"https": "http://miotroproxy.com:4321"`. La propiedad `exclude` especifica una lista separada por comas de hosts y dominios para omitir el proxy. | |
| `windowsDockerdPort` | Solo Windows | Expone localmente el proxy interno de Docker Desktop en este puerto para que se conecte el daemon de Docker de Windows. Si se establece en 0, se elige un puerto libre de forma aleatoria. Si el valor es mayor que 0, se utiliza ese valor exacto para el puerto. El valor predeterminado es -1, lo que desactiva la opción. | |
| `enableKerberosNtlm` | | Cuando se establece en `true`, se habilita la autenticación Kerberos y NTLM. El valor por defecto es `false`. Para obtener más información, consulta la documentación de configuración. | |
| `pac` | | Especifica la URL de un archivo PAC. Por ejemplo, `"pac": "http://proxy/proxy.pac"`. | |
| `embeddedPac` | | Especifica un script PAC (Proxy Auto-config) incrustado. Por ejemplo, `"embeddedPac": "function FindProxyForURL(url, host) { return \"DIRECT\"; }"`. Esta configuración tiene precedencia sobre HTTP, HTTPS, exclusión de proxy y la URL del servidor PAC. | |

### Proxy de contenedores

| Parámetro | SO | Descripción | Versión |
| :---------------- | --- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- |
| `containersProxy` | | Crea contenedores en entornos aislados (air-gapped). Para obtener más información, consulta [Contenedores en entornos aislados (Air-Gapped)](/enterprise/security/hardened-desktop/air-gapped-containers/). | |
| `pac` | | Especifica la URL de un archivo PAC. Por ejemplo, `"pac": "http://containerproxy/proxy.pac"`. | |
| `embeddedPac` | | Especifica un script PAC (Proxy Auto-config) incrustado. Por ejemplo, `"embeddedPac": "function FindProxyForURL(url, host) { return \"PROXY 192.168.92.1:2003\"; }"`. Esta configuración tiene precedencia sobre HTTP, HTTPS, exclusión de proxy y la URL del servidor PAC. | |

### Ajustes de la VM Linux

| Parámetro | SO | Descripción | Versión |
| :----------------------------------------------- | ------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| `linuxVM` | | Parámetros y ajustes relacionados con las opciones de la VM Linux, agrupados aquí para mayor comodidad. | |
| &nbsp; &nbsp; &nbsp; &nbsp;`wslEngineEnabled` | Solo Windows | Si `value` se establece en true, Docker Desktop utiliza el motor basado en WSL 2. Esto anula cualquier valor que se haya podido establecer en la instalación mediante la bandera `--backend=<nombre_backend>`. | |
| &nbsp; &nbsp; &nbsp; &nbsp;`dockerDaemonOptions` | | Si `value` se establece en true, anula las opciones del archivo de configuración del motor de Docker (Docker Engine). Consulta la [referencia del motor de Docker](/reference/cli/dockerd/#daemon-configuration-file). Ten en cuenta que, para mayor seguridad, se pueden anular algunos atributos de configuración cuando el Aislamiento de Contenedores Mejorado está habilitado. | |
| &nbsp; &nbsp; &nbsp; &nbsp;`vpnkitCIDR` | | Anula el rango de red utilizado para DHCP/DNS de vpnkit para `*.docker.internal`. | |

### Contenedores de Windows

| Parámetro | SO | Descripción | Versión |
| :----------------------------------------------- | --- | :--------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| `windowsContainers` | | Parámetros y ajustes relacionados con las opciones de `windowsContainers`, agrupados aquí para mayor comodidad. | |
| &nbsp; &nbsp; &nbsp; &nbsp;`dockerDaemonOptions` | | Anula las opciones en el archivo de configuración del daemon de Linux. Consulta la [referencia del motor de Docker](/reference/cli/dockerd/#daemon-configuration-file). | |

> [!NOTE]
>
> Este ajuste no está disponible para configurarse a través de la Consola de administración de Docker.

### Ajustes de Kubernetes

| Parámetro | SO | Descripción | Versión |
| :----------- | --- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| `kubernetes` | | Si `enabled` se establece en true, se inicia un clúster de nodo único de Kubernetes al iniciar Docker Desktop. Si `showSystemContainers` se establece en true, los contenedores de Kubernetes se muestran en el Panel (Dashboard) de Docker Desktop y al ejecutar `docker ps`. El ajuste [imagesRepository](/desktop/use-desktop/kubernetes/#configuring-a-custom-image-registry-for-kubernetes-control-plane-images) te permite especificar de qué repositorio descarga Docker Desktop las imágenes del plano de control de Kubernetes. | |

> [!NOTE]
>
> Al usar `imagesRepository` con el Aislamiento de Contenedores Mejorado (ECI), añade estas imágenes a la [lista de imágenes de montaje de socket de Docker de ECI](#aislamiento-de-contenedores-mejorado):
>
> `[imagesRepository]/desktop-cloud-provider-kind:`
> `[imagesRepository]/desktop-containerd-registry-mirror:`
>
> Estos contenedores montan el socket de Docker, por lo que debes añadirlos a la lista de imágenes de ECI. De lo contrario, ECI bloqueará el montaje y Kubernetes no se iniciará.

### Ajustes de red

| Parámetro | SO | Descripción | Versión |
| :---------------------- | --------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- |
| `defaultNetworkingMode` | Solo Windows y Mac | Define el protocolo IP predeterminado para las nuevas redes de Docker: `dual-stack` (IPv4 + IPv6, por defecto), `ipv4only` o `ipv6only`. | |
| `dnsInhibition` | Solo Windows y Mac | Controla el filtrado de registros DNS que se devuelven a los contenedores. Opciones: `auto` (recomendado), `ipv4`, `ipv6`, `none`. | |
| `portBindingBehavior` | Solo contenedores Linux | Define las restricciones de vinculación de puertos y el comportamiento predeterminado, permitiendo a los administradores controlar cómo expone los puertos un usuario desde sus contenedores. Opciones: `default-port-binding`, `default-local-port-binding`, `local-only-port-binding`. | Docker Desktop versión 4.52 y posteriores. |

Para obtener más información, consulta [Redes](/desktop/features/networking/#networking-mode-and-dns-behaviour-for-mac-and-windows).

### Ajustes de IA

| Parámetro | SO | Descripción | Versión |
| :-------------------------- | ------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| `enableInference` | | Establecer `enableInference` en `true` habilita [Docker Model Runner](/ai/model-runner/). | |
| `enableInferenceTCP` | | Habilita el soporte TCP en el lado del host. Esta configuración requiere que el ajuste Docker Model Runner esté habilitado primero. | |
| `enableInferenceTCPPort` | | Especifica el puerto TCP expuesto. Esta configuración requiere que los ajustes Docker Model Runner y Habilitar el soporte TCP en el lado del host estén habilitados primero. | |
| `enableInferenceCORS` | | Especifica los orígenes CORS permitidos. Cadena vacía para denegar todos, `*` para aceptar todos, o una lista de valores separados por comas. Esta configuración requiere que los ajustes Docker Model Runner y Habilitar el soporte TCP en el lado del host estén habilitados primero. | |
| `enableInferenceGPUVariant` | Solo Windows | Establecer `enableInferenceGPUVariant` en `true` habilita la inferencia respaldada por GPU. Los componentes adicionales requeridos para esto no vienen de manera predeterminada con Docker Desktop, por lo tanto se descargarán en `~/.docker/bin/inference`. | |

### Características Beta

> [!IMPORTANT]
>
> Para las versiones de Docker Desktop 4.41 y anteriores, algunos de estos ajustes se encontraban bajo la pestaña **Experimental features** (Características experimentales) en la página **Features in development** (Características en desarrollo).

| Parámetro | SO | Descripción | Versión |
| :-------------------------- | --- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- |
| `allowBetaFeatures` | | Si `value` se establece en `true`, se habilitan las características beta. | |
| `enableDockerAI` | | Si `allowBetaFeatures` es true, establecer `enableDockerAI` en `true` habilita [Gordon](/ai/gordon/) por defecto. Puedes controlar de forma independiente esta configuración desde el ajuste `allowBetaFeatures`. | |
| `enableDockerMCPToolkit` | | Si `allowBetaFeatures` es true, establecer `enableDockerMCPToolkit` en `true` habilita la [característica MCP Toolkit](/ai/mcp-catalog-and-toolkit/toolkit/) por defecto. Puedes controlar de forma independiente esta configuración desde el ajuste `allowBetaFeatures`. | |
| `allowExperimentalFeatures` | | Si `value` se establece en `true`, se habilitan las características experimentales. | |

### Aislamiento de Contenedores Mejorado

| Parámetro | SO | Descripción | Versión |
| :------------------------------------------------------------- | --- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| `enhancedContainerIsolation` | | Si `value` se establece en true, Docker Desktop ejecuta todos los contenedores como no privilegiados, a través del espacio de nombres de usuario de Linux (user namespace), evita que modifiquen configuraciones sensibles dentro de la VM de Docker Desktop y utiliza otras técnicas avanzadas para aislarlos. Para obtener más información, consulta [Aislamiento de Contenedores Mejorado](/enterprise/security/hardened-desktop/enhanced-container-isolation/). | |
| &nbsp; &nbsp; &nbsp; &nbsp;`dockerSocketMount` | | Por defecto, el aislamiento de contenedores mejorado bloquea el montaje tipo bind del socket de Docker Engine dentro de los contenedores (por ejemplo, `docker run -v /var/run/docker.sock:/var/run/docker.sock ...`). Esto te permite flexibilizar esto de manera controlada. Consulta [Configuración de ECI](/enterprise/security/hardened-desktop/enhanced-container-isolation/config/) para obtener más información. | |
| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; `imageList` | | Indica qué imágenes de contenedor tienen permitido el montaje tipo bind del socket de Docker Engine. | |
| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; `commandList` | | Restringe los comandos que los contenedores pueden enviar a través del socket de Docker Engine montado mediante bind. | |

