【问题标题】:Docker containers in user defined docker network - access only from the host用户定义的 docker 网络中的 Docker 容器 - 只能从主机访问
【发布时间】:2019-04-15 21:21:44
【问题描述】:

我有一个应用程序正在用户定义的 docker 网络中创建一些容器。

目前我已经从该网络中的一些容器转发(映射)几个端口主机,以便我可以从主机访问它们。容器之间的交互(容器到容器)是通过网络中定义的别名进行的。

不幸的是,到主机的映射端口在我的主机上公开。有没有办法只能从我的主机的 localhost 访问这些映射的端口?

【问题讨论】:

    标签: docker docker-networking


    【解决方案1】:

    如果你使用 docker run -p [port-number]:[port-number] 来转发你的端口,你可以使用:

    docker run -p 127.0.0.1:80:80 container
    

    代替:

    docker run -p 80:80 container
    

    默认情况下,Docker 在所有可用接口上公开您的端口。

    【讨论】:

    【解决方案2】:

    如果你在 linux 上,你可以使用 iptables。

    iptables -A INPUT -p tcp -s localhost --dport 8080 -j ACCEPT
    iptables -A INPUT -p tcp --dport 8080 -j DROP
    

    只需将8080 更改为您想要的端口,然后为您要公开的每个端口多次运行它。

    第一个命令是“任何来自 localhost 到端口 8080 的东西都允许它”,第二个命令是“丢弃任何进入端口 8080 的东西”

    此更改不是永久性的,它会在您重新启动后重置,但您可以通过以下方式保存:

    iptables-save > /etc/iptables.conf
    

    并使用以下命令恢复它:

    iptables-restore < /etc/iptables.conf
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 2021-11-04
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 2019-08-08
      • 2022-11-10
      相关资源
      最近更新 更多