隔離網路容器
目錄
要求: 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
。