【问题标题】:Docker. How to run my container on a specific local ip码头工人。如何在特定的本地 ip 上运行我的容器
【发布时间】:2017-12-28 20:31:35
【问题描述】:

我有这样一个简单的docker-compose.yml 文件,它提供一些静态文件:

version: '3'
services:
    nginx:
        container_name: docs_nginx
        image: nginx:latest
        ports:
            - "80:80"
            - "443:443"
        volumes:
            - ./:/var/www
            - ./docker/vhost.conf:/etc/nginx/conf.d/default.conf

现在可以访问了

  • 127.0.0.1
  • 0.0.0.0

例如,是否有可能以某种方式调整 docker-compose.yml 以在 127.127.127.127 上运行我的容器?

作为答案,我将接受一个有效的docker-compose.yml 示例,因为我在文档/博客中阅读了很多关于网络的内容,但无法弄清楚我做错了什么。

谢谢!

【问题讨论】:

    标签: macos docker networking docker-compose docker-networking


    【解决方案1】:

    您必须创建一个网络以及您希望运行的服务。然后你给出一个基本 IP 和 CIDR 掩码范围内的静态 IP 地址。由于我不知道您的网络,因此您需要将其与您的网络配置更接近,以便网关可以通过与主机相同的网关连接到 Internet。应该可以设置它,以便网关通过主机路由,但我不记得如何管理它。我确信有一个更具体的方法来描述该过程。当我有机会找到那个问题的答案时,我会看看。

    version: '3' services: nginx: container_name: docs_nginx image: nginx:latest ports: - "80:80" - "443:443" networks: vpcbr: ipv4_address: 10.5.0.6 volumes: - ./:/var/www - ./docker/vhost.conf:/etc/nginx/conf.d/default.conf networks: vpcbr: driver: bridge ipam: config: - subnet: 10.5.0.0/16 gateway: 10.5.0.1

    https://docs.docker.com/engine/userguide/networking/#custom-network-plugins

    这很好地说明了为 docker 容器创建网络时发生的情况。当您调用 docker-compose 时,它​​会将网络密钥转换为网络命令。

    注意:我不能保证这会奏效,因为我不知道您的设置。但这应该让你进入球场。

    如果您有任何问题,请告诉我。

    【讨论】:

      【解决方案2】:

      您需要选择主机可以路由到的 IP 地址。如果您的主机 IP 地址是 192.168.0.50,它在 yml 文件中可能如下所示:

      version: "2"
      services:   host1:
      networks:
        mynet:
          ipv4_address: 192.168.0.101 networks:   mynet:
      driver: bridge
      ipam:
        config:
        - subnet: 192.168.0.0/24
      

      您还可以使用以下列出的手动步骤在启动脚本中指定 IP 地址: https://jpetazzo.github.io/2013/10/16/configure-docker-bridge-network/

      【讨论】:

      • 谢谢,但上面写着ERROR: yaml.scanner.ScannerError: mapping values are not allowed here in "./docker-compose.yml", line 16, column 41
      • 请发布整个 yml 文件。
      • 我已经发布了整个文件。它在问题的描述中。它非常简单而且很小。我只将您的行添加到底部。你能写一个“正确合并”的 yml 文件吗?
      • 我的问题是我使用 docker for mac,你无法从 mac 主机访问容器:docs.docker.com/docker-for-mac/networking "Docker Desktop for Mac 无法将流量路由到容器。"和“无法从 macOS 主机访问 docker (Linux) 桥接网络。”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 2019-01-29
      • 2019-10-03
      相关资源
      最近更新 更多