簡體   English   中英

docker 限制容器網絡訪問

[英]docker restrict container network access

我在 docker 上創建了 2 個容器。 我的這些容器在同一個網絡中。 我想限制這些容器訪問我的本地網絡。

例如; 容器 1 可以訪問我的整個網絡。 但是容器 2 無法到達任何地方,但只有我可以訪問它。 我無法從中央防火牆執行此操作,因為所有容器的源地址都是我的 docker 主機的 IP 地址。

我嘗試用 iptables 來做這件事。 我為容器 1 添加了以下規則:

iptables -I DOCKER-USER -s 172.17.0.2 -j ACCEPT

我為容器 2 添加了以下規則:

iptables -I DOCKER-USER -s 172.17.0.4 -j DROP

當我這樣做時,容器 1 可以訪問我的網絡,容器 2 無法訪問我的網絡。 這就是我要的。 但因此,容器 2 無法響應我的 TCP 請求,因此我無法訪問它。

這個問題有方法解決嗎?

聽起來您正在尋找的是內部網絡。 內部網絡明確限制對網絡的外部訪問。

您如何發揮作用最終取決於您如何部署容器。 如果你使用 docker-compose 那么你需要修改你的 docker-compose.yml 文件看起來像這樣:

version: '2'
services:
  app1:
    image: mysql:5.7
    networks:
      - network1 
        
  app2:
    image: someImage
    networks:
      - network1
      - network2
networks:
  network1:
    internal: true
  network2:

如果您正在通過命令行,那么您將創建一個這樣的網絡:

docker network create -d overlay --internal myprivatenetwork

然后以這種方式將其附加到您的容器:

docker network connect myprivatenetwork app1

如果您正在尋找可以跨群工作的東西,那么覆蓋網絡可能更適合您的需求。 根據文檔

覆蓋網絡驅動程序在多個 Docker 守護進程主機之間創建一個分布式網絡。 該網絡位於(覆蓋)特定於主機的網絡之上,允許連接到它的容器(包括群服務容器)在啟用加密時安全地通信。

覆蓋網絡的創建方式如下

docker network create -d overlay --attachable my-attachable-overlay

並且可以附加在與上面提到的相同的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM