使用docker网桥网络IP访问apache容器中的vhost

使用docker网桥网络IP访问apache容器中的vhost,apache,networking,docker,bridge,Apache,Networking,Docker,Bridge,我想了解如何通过在我的本地/etc/hosts文件中提供一个带有docker网桥网络IP的条目来访问docker容器中vhost中配置的域 我使用docker compose(v2) Docker网桥IP(默认):172.17.0.1 我有一个运行在172.19.0.10上的apache容器 Vhost很简单,例如: <VirtualHost *:80> ServerName mywebsite.local ServerName mywebsite.local 在我的loc

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

  • 我使用docker compose(v2)
  • Docker网桥IP(默认):172.17.0.1
  • 我有一个运行在172.19.0.10上的apache容器
  • Vhost很简单,例如:

    <VirtualHost *:80>
      ServerName mywebsite.local
    
    
    ServerName mywebsite.local
    
    在我的local/etc/hosts文件中,我有:172.17.0.1 mywebsite.local

    而且它是有效的。。。但是怎么做呢?
    Docker是否使用端口猜测将流量转发到何处(从172.17.0.1转发到172.19.0.10)?
    有人能给我一些解释和文件吗


    谢谢。

    在某个时候,您必须用以下内容启动您的集装箱/码头工人:

    docker run -d -p 1337:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND
    
    1337:80
    意味着浏览器中的
    localhost:1337
    将在端口80上进行查找,从而查找apache容器

    希望你有什么想法


    另请参见或。

    在某些情况下,您必须使用以下内容启动您的容器/码头工人:

    docker run -d -p 1337:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND
    
    1337:80
    意味着浏览器中的
    localhost:1337
    将在端口80上进行查找,从而查找apache容器

    希望你有什么想法

    另请参见或。

    您可以尝试使用

    docker-run-d--network=host
    或在docker-compose中
    网络模式:“主机”
    。关于这方面的文件可以找到

    这两种方法都将容器放在主机网络堆栈的顶部。

    您可以尝试使用

    docker-run-d--network=host
    或在docker-compose中
    网络模式:“主机”
    。关于这方面的文件可以找到


    这两种方法都将您的容器放在主机网络堆栈的顶部。

    我正在使用docker compose,唯一要做的事情是使用ports指令:ports:-80:80,这样:从端口80传入的请求被发送到内部端口80,该端口是您的apache(由启动命令和vhost本身定义)。因此,在我的解释中,将1337替换为80并完成:)Docker将侦听主机上的所有接口,即
    *:
    ,除非您在端口映射中指定IP地址。虽然
    localhost:
    可以工作,但是其他地址也可以工作。我使用docker compose,唯一要做的事情是使用ports指令:ports:-80:80,这样就可以了:从端口80传入的请求被发送到内部端口80,它是您的apache(由启动命令和vhost本身定义)。因此,在我的解释中,将1337替换为80并完成:)Docker将侦听主机上的所有接口,即
    *:
    ,除非您在端口映射中指定IP地址。虽然
    localhost:
    可以工作,但其他地址也可以工作。