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