【问题标题】:Docker-compose Giving static IP in network mode : bridgeDocker-compose 在网络模式下提供静态 IP:网桥
【发布时间】:2020-05-22 06:49:00
【问题描述】:

我只是尝试给这个容器一个静态 ip 172.17.0.44,就像这样,

但它不起作用,

如何用“network_mode : bridge”给出静态IP地址

因为我需要为这个容器提供 172.17.0 系列 ip

当我设置网络模式桥接时,我得到这个 172.17.0 系列 ip

version: '2.1'

services:
mysql_db:
  image: mysql:latest
  network_mode: bridge
    ipv4_address: 172.17.0.44
  volumes:
    - "./.mysql-data/_data:/var/lib/mysql"
  restart: always
  ports:
    - 8555:8110
  environment:
    MYSQL_ROOT_PASSWORD: rootpass123
    MYSQL_DATABASE: testing
    MYSQL_USER: test
    MYSQL_PASSWORD: test

已经有一个具有 172.17 系列 ip 的网络,所以我希望加入具有该默认桥接网络的容器并获得一个静态 IP

【问题讨论】:

  • 这是你需要的,检查stackoverflow.com/q/39493490/8438982
  • 您的YML 文件格式不正确,至少是您在此处提供的格式不正确,我认为它会导致终端出现错误。
  • 是的,兄弟,但我需要给 ip 172.17.0.44 这个,上面的链接正在工作,我们可以创建并提供我们需要的 ip,但我只想设置这个 ip,当我试试这个,它说网络已经像那样错误了,如果我们把网络模式:桥然后它会自动将容器附加到默认网络中,在那个默认网络中我需要我正在尝试的静态 ip
  • 为什么需要设置这个地址?在 Docker 空间中,您可以使用 Compose 服务名称 mysql_db 作为主机名(内部端口为 8110);从外部,您可以使用主机名(以及发布的端口 8555),通常无法访问容器私有地址。您不需要任何手动网络设置。
  • 它的创建就像测试数据库服务器一样,我们的一些应用程序正在使用 172.17.0.44 地址进行数据库连接,所以这就是为什么要在网络模式桥接器中分配一个静态 ip,也是这个 44 ip很好,但是如果我们执行 docker-container down ,然后再次执行 db 容器 ip 正在发生变化,因此尝试始终提供静态 ip

标签: mysql docker docker-compose dockerfile


【解决方案1】:

您还需要指定要创建的网络:

version: '2.1'

services:
  mysql_db:
    image: mysql:latest
    networks:
      db:
        ipv4_address: 172.17.0.44
    volumes:
      - "./.mysql-data/_data:/var/lib/mysql"
    restart: always
    ports:
      - 8555:8110
    environment:
      MYSQL_ROOT_PASSWORD: rootpass123
      MYSQL_DATABASE: testing
      MYSQL_USER: test
      MYSQL_PASSWORD: test

networks:
  db:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.17.0.0/24

欲了解更多信息:https://docs.docker.com/compose/networking/

【讨论】:

  • 不,兄弟,它得到了错误:池与此地址空间上的其他池重叠这个错误因为已经有一个 172.17 系列的网络,所以这就是它出现这个错误的原因(如果我们更改为 172.18,它将起作用)我需要使用“网络模式:网桥”加入容器,该容器将加入 172.17 系列 ip,并将静态 ip 放在这里,我认为我们不需要在这里创建网络,只想给 ip只有 bcoz 已经存在“网络模式”是网桥
  • 是的,如果您已经有另一个 docker 网络,这很有可能。您可以将IP更改为172.18.xxx.xxx
【解决方案2】:

您的 yaml 中有错误,因为 ipv4_address 不是 network_mode 的键。

你想要的是以下内容:

network_mode: bridge
networks:
  default:
    ipv4_address:

如果未指定任何内容,则会创建 default 网络。

【讨论】:

  • 试过但说 ipv4_address 是一个类似错误的字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-22
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
  • 2020-06-24
相关资源
最近更新 更多