使用设置管理配置气隙容器
测试版功能
此功能处于 测试阶段。它适用于 Docker Desktop 4.29 及更高版本。
气隙容器允许管理员限制容器访问网络资源,从而限制数据上传或下载的位置。
Docker Desktop 可以将一组自定义代理规则应用于来自容器的网络流量。代理可以配置为:
- 允许网络连接
- 拒绝网络连接
- 通过 HTTP 或 SOCKS 代理建立隧道
你可以选择:
- 策略适用于哪些传出 TCP 端口。例如,仅某些端口,
80
或443
全部带有*
。 - 是转发到单个 HTTP 或 SOCKS 代理,还是通过代理自动配置 (PAC) 文件为每个目标制定策略。
配置
假设
已启用强制登录和设置管理,请将新的代理配置添加到admin-settings.json
文件中。例如:
{
"configurationFileVersion": 2,
"containersProxy": {
"locked": true,
"mode": "manual",
"http": "",
"https": "",
"exclude": "",
"pac": "http://192.168.1.16:62039/proxy.pac",
"transparentPorts": "*"
}
}
该containersProxy
设置描述了应用于来自容器的流量的策略。有效字段是:
locked
:如果为 true,则开发人员无法覆盖这些设置。如果为 false,则设置将被解释为开发人员可以更改的默认值。mode
:与现有设置含义相同proxy
。可能的值为system
和manual
。http
,https
,exclude
: 与proxy
设置含义相同。仅当mode
设置为 时才生效manual
。pac
:PAC 文件的 URL。仅当mode
是manual
且被视为比http
,更高优先级时才生效https
。exclude
transparentPorts
:以逗号分隔的端口列表(例如"80,443,8080"
)或通配符 (*
) 指示应代理哪些端口。
重要的
文件中的任何现有
proxy
设置admin-settings.json
将继续应用于来自主机上应用程序的流量。
PAC 文件示例
有关 PAC 文件的一般信息,请参阅 MDN Web 文档。
以下是 PAC 文件示例:
function FindProxyForURL(url, host) {
if (localHostOrDomainIs(host, 'internal.corp')) {
return "PROXY 10.0.0.1:3128";
}
if (isInNet(host, "192.168.0.0", "255.255.255.0")) {
return "DIRECT";
}
return "PROXY reject.docker.internal:1234";
}
参数url
为http://host_or_ip:port
或https://host_or_ip:port
。
主机名通常可用于端口80
和上的传出请求443
,但对于其他情况,只有 IP 地址。
可以FindProxyForURL
返回以下值:
PROXY host_or_ip:port
:通过 HTTP 代理传输此请求host_or_ip:port
SOCKS5 host_or_ip:port
:通过 SOCKS 代理传输此请求host_or_ip:port
DIRECT
:允许此请求直接发送,无需代理PROXY reject.docker.internal:any_port
: 拒绝此请求
在此特定示例中,HTTP 和 HTTPS 请求internal.corp
是通过 HTTP 代理发送的10.0.0.1:3128
。连接到子网上的 IP 的请求192.168.0.0/24
直接连接。所有其他请求都被阻止。
要限制连接到开发人员本地计算机上的端口的流量,
请匹配特殊的主机名host.docker.internal
。