大家好,我在 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)
问问题
201 次
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 回答