隔離網路的容器
目錄
Docker Desktop 4.29.0 版引入
隔離網路的容器可讓您限制容器存取網路資源,限制資料可以上傳或下載的位置。
Docker Desktop 可以將一組自訂的代理規則套用至來自容器的網路流量。可以將代理設定為
- 接受網路連線
- 拒絕網路連線
- 透過 HTTP 或 SOCKS 代理進行通道傳輸
您可以選擇
- 策略套用至哪些輸出 TCP 連接埠。例如,僅特定連接埠, `80`、`443` 或使用 `*` 表示全部。
- 是否要轉發到單個 HTTP 或 SOCKS 代理,或者是否要透過 Proxy Auto-Configuration (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`。