离线容器
目录
引入于 Docker Desktop 版本
4.29.0
空气隔离容器允许您限制容器访问网络资源,从而限制数据上传或下载的位置。
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")或通配符(*),指示哪些端口应该被代理。
重要
admin-settings.json文件中的任何现有proxy设置将继续应用于主机上来自应用的流量。
示例 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: 拒绝此请求
在此特定示例中,针对 internal.corp 的 HTTP 和 HTTPS 请求通过 HTTP 代理 10.0.0.1:3128 发送。连接到子网 192.168.0.0/24 上 IP 的请求直接连接。所有其他请求均被阻止。
为了限制连接到开发者本地机器端口的流量,
请匹配特殊主机名 host.docker.internal。