隔離網路容器

要求: 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 設定的含義相同。可能的值為 systemmanual
  • httphttpsexclude:與 proxy 設定的含義相同。僅當 mode 設定為 manual 時生效。
  • pac:PAC 檔案的 URL。僅當 modemanual 時生效,並且優先順序高於 httphttpsexclude
  • 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:porthttps://host_or_ip:port

對於埠 80443 上的出站請求,主機名通常可用,但對於其他情況,只有 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

頁面選項