斷開網路連線的容器

在 Docker Desktop 版本 4.29.0 中引入

斷開網路連線的容器允許管理員限制容器訪問網路資源,從而限制資料上傳或下載的位置。

Docker Desktop 可以將自定義代理規則集應用於來自容器的網路流量。代理可以配置為

  • 允許網路連線
  • 拒絕網路連線
  • 透過 HTTP 或 SOCKS 代理進行隧道傳輸

您可以選擇

  • 策略適用的傳出 TCP 埠。例如,僅特定埠,80443 或使用 * 的所有埠。
  • 是轉發到單個 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 檔案示例

有關 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