隔离网络容器
目录
要求: 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 文件下载失败,Docker Desktop 应用程序及其容器不会阻止请求;相反,它们会尝试直接连接到目标 URL。
PAC 文件示例
有关 PAC 文件的常规信息,请参阅 MDN Web Docs。
以下是 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
。