首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用MACVLAN网络保护容器?

如何用MACVLAN网络保护容器?
EN

DevOps用户
提问于 2022-05-23 16:01:40
回答 1查看 381关注 0票数 0

根据这个问题的说法,容器不能同时连接到内部桥和主机网络。然而,这正是我所需要的;我希望将一组容器连接到用于容器间通信的群集覆盖网络(如果需要的话,可以使用另一种解决方案,比如Weave),并连接到主机的网络,而不是NAT,以公开服务。因此,对于容器公开其服务,我知道的唯一选项是使用macvlan网络。

附带注意:在没有路由网格的情况下使用群集服务(每个主机只有一个容器/服务,对该主机的请求应该始终由该主机上的容器/服务来处理),但我的理解是,发布的端口将通过NAT。这是不可取的。

看来,通过macvlan网络公开的容器是完全公开的,不能被防火墙隔离(我读到macvlan网络不依赖于主机的网络堆栈,并且不能由主机防火墙--如果您有此源,请链接它)。可以使用最小的图像来限制攻击面,并且要非常小心地设置容器上服务的绑定地址,但这并不能取代防火墙。

因此,假设前三段不完全正确,那么在macvlan网络上安全公开容器的推荐方法是什么?

EN

回答 1

DevOps用户

发布于 2022-07-18 14:07:48

所引用的问题涉及同时连接到桥和主机网络的码头集装箱。

但是,为了公开一个服务,您通常通过dockers入口发布服务,而不是宿主大多数网络,所以这很少是一个问题。

也就是说,以下组成片段是合法的:

代码语言:javascript
复制
services:
  my-api:
    image: foo
    networks:
    - overlay1
    - bridge1
    ports:
    - 9090:8080

因为这些碎片是非法的:

代码语言:javascript
复制
services:
  my-api:
    image: foo
    # docker compose host mode networking.
    network_mode: host
    networks:
    - overlay1
    - bridge1
    - hostent
    ports:
    # docker swarm can publish a port on a host. This should work
    - target: 80
      published: 8080
      protocol: tcp
      mode: host

networks:
  # A different swarm compatible take on --net:host
  # Also can't be mixed with ingress networking.
  hostnet:
    external: true
    name: host
票数 0
EN
页面原文内容由DevOps提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://devops.stackexchange.com/questions/16007

复制
相关文章

相似问题

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