【问题标题】:Docker use ip from hostDocker 使用来自主机的 ip
【发布时间】:2018-06-21 20:48:49
【问题描述】:

我有一个问题,我想创建多个 docker 容器(使用 docker-compose)并使用 ip 地址调用每个容器。 在 Linux 主机上它可以工作,但在 Windows 作为主机时不能。

例子:

container 1 (php) ip: 192.168.100.10  
container 2 (mysql) ip: 192.168.100.11  
container 3 (nginx) ip: 192.168.100.12  

所以我想添加一个带有 nginx ip 的主机项,以使用 project.local 之类的主机名在浏览器上进行开发。

有人知道我必须在 Windows 上做什么才能实现这一点吗?

【问题讨论】:

    标签: windows docker networking docker-for-windows


    【解决方案1】:

    每个容器都为您与容器一起使用的基本系统使用一个内部 IP,例如,如果您使用的是 Linux,则所有容器都将有一个内部 IP,可以在容器之间看到,但对于主体主机则看不到,如果您想要连接到容器,您将需要使用例如 MySQL 3306 的端口,如果在它之间看不到容器,您将需要使用 docker compose 或 bash 创建链接或网络来设置此配置,here我附上一个例子:

    https://docs.docker.com/compose/networking/#specify-custom-networks

    version: "3"
    services:
    
      proxy:
        build: ./proxy
        networks:
          - frontend
      app:
        build: ./app
        networks:
          - frontend
          - backend
      db:
        image: postgres
        networks:
          - backend
    
    networks:
      frontend:
        # Use a custom driver
        driver: custom-driver-1
      backend:
        # Use a custom driver which takes special options
        driver: custom-driver-2
        driver_opts:
          foo: "1"
          bar: "2"
    

    https://docs.docker.com/compose/networking/#links

    version: "3"
    services:
    
      web:
        build: .
        links:
          - "db:database"
      db:
        image: postgres
    

    【讨论】:

    • 我理解的内部 docker 网络的逻辑和使用端口更多的是一个临时解决方案......很多教程都试图解释如何使用从 windows 主机连接到 docker 网络,但每个其中仅显示一个 docker 容器,而不显示 docker compose。所以它不会工作 :'( 使用 Linux-Host 它将连接(甚至自动),所以我认为 Windows 也有任何原因。
    猜你喜欢
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    相关资源
    最近更新 更多