首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头限制集装箱网络接入

码头限制集装箱网络接入
EN

Stack Overflow用户
提问于 2020-09-18 09:46:15
回答 1查看 1.1K关注 0票数 1

我在码头上造了两个集装箱。我的这些集装箱都在同一个网络里。我想限制这些容器访问我的本地网络。

例如,容器1可以访问整个网络。但是2号集装箱到不了任何地方,只有我才能到达。我不能在我的中央防火墙中这样做,因为所有容器的源地址都是我的停靠主机的IP地址。

我试着用iptables做这件事。我为容器1添加了以下规则:

代码语言:javascript
复制
iptables -I DOCKER-USER -s 172.17.0.2 -j ACCEPT

我为容器2添加了以下规则:

代码语言:javascript
复制
iptables -I DOCKER-USER -s 172.17.0.4 -j DROP

当我这样做时,容器1可以访问我的网络,容器2不能访问我的网络。这就是我想要的。但是,容器2不能响应我的TCP请求,所以我无法到达它。

有解决办法吗?

EN

回答 1

Stack Overflow用户

发布于 2020-09-18 10:05:35

听起来你想要的是一个内部网络。内部网络显式地限制对网络的外部访问。

如何发挥这一点最终取决于您如何部署您的容器。如果您使用的是docker,那么您需要修改docker-come.yml文件,如下所示:

代码语言:javascript
复制
version: '2'
services:
  app1:
    image: mysql:5.7
    networks:
      - network1 
        
  app2:
    image: someImage
    networks:
      - network1
      - network2
networks:
  network1:
    internal: true
  network2:

如果您正在遍历命令行,那么您将创建一个如下所示的网络:

代码语言:javascript
复制
docker network create -d overlay --internal myprivatenetwork

然后以这样的方式将它附加到容器上:

代码语言:javascript
复制
docker network connect myprivatenetwork app1

如果您正在寻找跨团队工作的东西,那么覆盖网络可能更适合您的需要。根据文件

覆盖网络驱动程序在多个Docker守护进程主机之间创建分布式网络。该网络位于(覆盖)特定于主机的网络之上,允许连接到它的容器(包括群集服务容器)在启用加密时安全地通信。

覆盖网络的创建方式如下

代码语言:javascript
复制
docker network create -d overlay --attachable my-attachable-overlay

并且可以和上面提到的一样附在上面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63953333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档