斷開網路連線的容器
目錄
在 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 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。