【问题标题】:Using docker bridge network IP to access vhost in apache container使用 docker bridge 网络 IP 访问 apache 容器中的 vhost
【发布时间】:2017-04-03 15:44:38
【问题描述】:

我想了解如何通过在我的本地 /etc/hosts 文件中提供一个带有 docker 网桥网络 IP 的条目来访问在 docker 容器内的 vhost 中配置的域。

  1. 我使用 docker-compose (v2)
  2. Docker 网桥 IP(默认):172.17.0.1
  3. 我有一个 apache 容器在 172.19.0.10 上运行

Vhost 很简单:

<VirtualHost *:80>
  ServerName mywebsite.local

在我的 local /etc/hosts 文件中,我有:172.17.0.1 mywebsite.local

而且它有效...但是如何?
Docker 是否使用端口来猜测将流量转发到哪里(从 172.17.0.1 到 172.19.0.10)?
有人可以给我一些解释和可能的文档吗?

谢谢。

【问题讨论】:

    标签: apache networking docker bridge


    【解决方案1】:

    在某些时候,您必须使用以下内容启动您的容器/docker:

    docker run -d -p 1337:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND
    

    1337:80 表示浏览器中的localhost:1337 在端口 80 上被查找,因此您的 apache 容器也被查找。

    希望你想到了什么?!

    另见thisthat

    【讨论】:

    • 我正在使用 docker-compose,唯一要做的就是使用 ports 指令:ports: - 80:80
    • 你去吧:从端口 80 进来的请求被发送到内部端口 80,这是你的 apache(由启动命令以及 vhost 本身定义)。所以在我的解释中将 1337 换成 80 并完成:)
    • Docker 将侦听所有接口,即主机上的*:&lt;port&gt;,除非您在端口映射中指定 IP 地址。虽然localhost:&lt;port&gt; 有效,但其他地址也有效。
    【解决方案2】:

    你可以试试

    docker run -d --network=host &lt;image&gt; 或在 docker compose network_mode: "host"。可以在here找到这方面的文档。

    这两种方法都将您的容器置于主机网络堆栈之上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-05
      • 2020-07-17
      • 1970-01-01
      • 2019-07-15
      • 2023-03-07
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多