Configure sign-in enforcement
You can enforce sign-in for Docker Desktop using several methods. Choose the method that best fits your organization's infrastructure and security requirements.
Choose your method
| Method | Platform |
|---|---|
| Registry key | Windows only |
| Configuration profiles | Mac only |
plist file | Mac only |
registry.json | All platforms |
TipFor Mac, configuration profiles offer the highest security because they're protected by Apple's System Integrity Protection (SIP).
Windows: Registry key method
To configure the registry key method manually:
Create the registry key:
$ HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Docker\Docker DesktopCreate a multi-string value name
allowedOrgs.Use your organization names as string data. You can add multiple organizations:
- Use lowercase letters only
- Add each organization on a separate line
- Do not use spaces or commas as separators
Restart Docker Desktop.
Verify the
Sign in required!prompt appears in Docker Desktop.
Deploy the registry key across your organization using Group Policy:
- Create a registry script with the required key structure.
- In Group Policy Management, create or edit a GPO.
- Navigate to Computer Configuration > Preferences > Windows Settings > Registry.
- Right-click Registry > New > Registry Item.
- Configure the registry item:
- Action: Update
- Path:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Docker\Docker Desktop - Value name:
allowedOrgs - Value data: Your organization names
- Link the GPO to the target Organizational Unit.
- Test on a small group using
gpupdate/force. - Deploy organization-wide after verification.
Mac: Configuration profiles method (recommended)
Configuration profiles provide the most secure enforcement method for Mac, as they're protected by Apple's System Integrity Protection.
The payload is a dictionary of key-values. Docker Desktop supports the following keys:
allowedOrgs: Sets a list of organizations in one single string, where each organization is separated by a semi-colon.overrideProxyHTTP: Sets the URL of the HTTP proxy that must be used for outgoing HTTP requests.overrideProxyHTTPS: Sets the URL of the HTTP proxy that must be used for outgoing HTTPS requests.overrideProxyExclude: Bypasses proxy settings for the specified hosts and domains. Uses a comma-separated list.overrideProxyPAC: Sets the file path where the PAC file is located. It has precedence over the remote PAC file on the selected proxy.overrideProxyEmbeddedPAC: Sets the content of an in-memory PAC file. It has precedence overoverrideProxyPAC.
Overriding at least one of the proxy settings via Configuration profiles will automatically lock the settings as they're managed by Mac.
- Create a file named
docker.mobileconfigand include the following content:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>PayloadContent</key> <array> <dict> <key>PayloadType</key> <string>com.docker.config</string> <key>PayloadVersion</key> <integer>1</integer> <key>PayloadIdentifier</key> <string>com.docker.config</string> <key>PayloadUUID</key> <string>eed295b0-a650-40b0-9dda-90efb12be3c7</string> <key>PayloadDisplayName</key> <string>Docker Desktop Configuration</string> <key>PayloadDescription</key> <string>Configuration profile to manage Docker Desktop settings.</string> <key>PayloadOrganization</key> <string>Your Company Name</string> <key>allowedOrgs</key> <string>first_org;second_org</string> <key>overrideProxyHTTP</key> <string>http://company.proxy:port</string> <key>overrideProxyHTTPS</key> <string>https://company.proxy:port</string> </dict> </array> <key>PayloadType</key> <string>Configuration</string> <key>PayloadVersion</key> <integer>1</integer> <key>PayloadIdentifier</key> <string>com.yourcompany.docker.config</string> <key>PayloadUUID</key> <string>0deedb64-7dc9-46e5-b6bf-69d64a9561ce</string> <key>PayloadDisplayName</key> <string>Docker Desktop Config Profile</string> <key>PayloadDescription</key> <string>Config profile to enforce Docker Desktop settings for allowed organizations.</string> <key>PayloadOrganization</key> <string>Your Company Name</string> </dict> </plist> - Replace placeholders:
- Change
com.yourcompany.docker.configto your company identifier - Replace
Your Company Namewith your organization name - Replace
PayloadUUIDwith a randomly generated UUID - Update the
allowedOrgsvalue with your organization names (separated by semicolons) - Replace
company.proxy:portwith http/https proxy server host(or IP address) and port
- Change
- Deploy the profile using your MDM solution.
- Verify the profile appears in System Settings > General > Device Management under Device (Managed). Ensure the profile is listed with the correct name and settings.
Some MDM solutions let you specify the payload as a plain dictionary of key-value settings without the full .mobileconfig wrapper:
<dict>
<key>allowedOrgs</key>
<string>first_org;second_org</string>
<key>overrideProxyHTTP</key>
<string>http://company.proxy:port</string>
<key>overrideProxyHTTPS</key>
<string>https://company.proxy:port</string>
</dict>Mac: plist file method
- Create the file
/Library/Application Support/com.docker.docker/desktop.plist. - Add this content, replacing
myorg1andmyorg2with your organization names:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>allowedOrgs</key> <array> <string>myorg1</string> <string>myorg2</string> </array> </dict> </plist> - Set file permissions to prevent editing by non-administrator users.
- Restart Docker Desktop.
- Verify the
Sign in required!prompt appears in Docker Desktop.
Create and deploy a script for organization-wide distribution:
#!/bin/bash
# Create directory if it doesn't exist
sudo mkdir -p "/Library/Application Support/com.docker.docker"
# Write the plist file
sudo defaults write "/Library/Application Support/com.docker.docker/desktop.plist" allowedOrgs -array "myorg1" "myorg2"
# Set appropriate permissions
sudo chmod 644 "/Library/Application Support/com.docker.docker/desktop.plist"
sudo chown root:admin "/Library/Application Support/com.docker.docker/desktop.plist"Deploy this script using SSH, remote support tools, or your preferred deployment method.
All platforms: registry.json method
The registry.json method works across all platforms and offers flexible deployment options.
File locations
Create the registry.json file (UTF-8 without BOM) at the appropriate location:
| Platform | Location |
|---|---|
| Windows | /ProgramData/DockerDesktop/registry.json |
| Mac | /Library/Application Support/com.docker.docker/registry.json |
| Linux | /usr/share/docker-desktop/registry/registry.json |
Basic setup
- Ensure users are members of your Docker organization.
- Create the
registry.jsonfile at the appropriate location for your platform. - Add this content, replacing organization names with your own:
{ "allowedOrgs": ["myorg1", "myorg2"] } - Set file permissions to prevent user editing.
- Restart Docker Desktop.
- Verify the
Sign in required!prompt appears in Docker Desktop.
TipIf users have issues starting Docker Desktop after enforcing sign-in, they may need to update to the latest version.
Windows (PowerShell as Administrator)
Set-Content /ProgramData/DockerDesktop/registry.json '{"allowedOrgs":["myorg1","myorg2"]}'Mac
sudo mkdir -p "/Library/Application Support/com.docker.docker"
echo '{"allowedOrgs":["myorg1","myorg2"]}' | sudo tee "/Library/Application Support/com.docker.docker/registry.json"
Linux
sudo mkdir -p /usr/share/docker-desktop/registry
echo '{"allowedOrgs":["myorg1","myorg2"]}' | sudo tee /usr/share/docker-desktop/registry/registry.json
Create the registry.json file during Docker Desktop installation:
Windows
# PowerShell
Start-Process '.\Docker Desktop Installer.exe' -Wait 'install --allowed-org=myorg'
# Command Prompt
"Docker Desktop Installer.exe" install --allowed-org=myorgMac
sudo hdiutil attach Docker.dmg
sudo /Volumes/Docker/Docker.app/Contents/MacOS/install --allowed-org=myorg
sudo hdiutil detach /Volumes/Docker
Method precedence
When multiple configuration methods exist on the same system, Docker Desktop uses this precedence order:
- Registry key (Windows only)
- Configuration profiles (Mac only)
- plist file (Mac only)
- registry.json file
Troubleshoot sign-in enforcement
If sign-in enforcement doesn't work:
- Verify file locations and permissions
- Check that organization names use lowercase letters
- Restart Docker Desktop or reboot the system
- Confirm users are members of the specified organizations
- Update Docker Desktop to the latest version