泊坞窗。如何在特定的本地IP上运行我的容器

问题描述 投票:0回答:2

我有一个简单的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
2个回答
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时,它会将网络密钥转换为网络命令。

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

如果您有任何疑问,请与我联系。


0
投票

您需要选择主机可以路由到的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/

© www.soinside.com 2019 - 2024. All rights reserved.