0

大家好,我在 docker 中创建了一个带有 mac-vlan 类型的网络,因为我希望我的容器与主机在同一个 LAN 上。现在我注意到的奇怪的事情是,当我停止然后使用 docker start 命令重新启动容器时容器启动,但分配给它的 IP 是在容器关闭之前分配的 IP。当容器重新启动时IP不会改变此外容器现在无法访问,因为它显示为自己的IP现在已经重新分配给网络上的另一台机器,从我读到的容器被分配了与以前相同的IP但是如果容器无法获取 IP,则无法启动,但我的容器可以正常启动。我在这里想念什么?上ubuntu version 17.10 docker version 17.11.0-ce Api version 1.34 (both client and server)

4

1 回答 1

0

您不应该在 docker 中使用静态 IP,除非您正在使用允许从外部路由到内部容器的东西,例如 macvlan。DNS 已经用于容器网络内部的服务发现,并支持容器扩展。在容器网络之外,您应该使用主机上的暴露端口。

话虽如此,您可以使用 docker-compose 实现上述目标,如下所示:


services:
  mysql:
    container_name: backend-database
    image: mysql:latest
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=root
    ports:
     - "3306:3306"
    networks:
      mynetwork:
        ipv4_address: 10.5.0.5

  apache-tomcat:
    container_name: apache-tomcat
    build: tomcat/.
    ports:
     - "8080:8080"
     - "8009:8009"
    networks:
      mynetwork:
        ipv4_address: 10.5.0.6
    depends_on:
     - mysql

networks:
  mynetwork:
    driver: bridge
    ipam:
     config:
       - subnet: 10.5.0.0/16
         gateway: 10.5.0.1

于 2019-07-23T07:39:29.877 回答