gpt4 book ai didi

docker - Docker-容器IP地址映射

转载 作者:行者123 更新时间:2023-12-02 20:46:20 41 4
gpt4 key购买 nike

在Docker中,我有3个容器,分别是节点,mysql和redis。当我运行sudo iptables -t nat -L -n时,我可以看到这些容器正在不同的IP地址上运行,如下所示

enter image description here

但是,每次执行172.23.0.x时,服务的IP地址顺序和IP地址(在某些计算机上为172.21.0.x,在某些计算机上为docker-compose up --build)可能会有所不同,因此,如果我希望该应用正常运行,则必须为每个服务配置IP地址手动。有什么方法可以自动为docker-compose.yml文件中的每个服务映射一个固定的IP地址?谢谢。这是我的docker-compose.yml文件:

version: "3"
services:
universe:
build: .
working_dir: /usr/src
volumes:
- .:/usr/src
- /usr/src/node_modules/
ports:
- "3000:3000"
- "8000:8000"
restart: always

# Redis Alpine
redis:
image: redis:alpine
ports:
- "127.0.0.1:6379:6379"

# MySQL 5.7
mysql:
build:
context: ./docker/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database_name
MYSQL_USER: database_user
MYSQL_PASSWORD: database_password
volumes:
- /config/scripts:/docker-entrypoint-initdb.d
restart: always
ports:
- "127.0.0.1:3306:3306"

最佳答案

您可以尝试通过定义具有桥接连接的网络(包括该定义的网络的子网网关)来尝试这种类型的docker-compose.yml配置。

version: "3"
services:
universe:
build: .
working_dir: /usr/src
volumes:
- .:/usr/src
- /usr/src/node_modules/
ports:
- "3000:3000"
- "8000:8000"
restart: always
networks:
vpcbr:
ipv4_address: 10.3.0.2

# Redis Alpine
redis:
image: redis:alpine
ports:
- "6379:6379"
networks:
vpcbr:
ipv4_address: 10.3.0.3

# MySQL 5.7
mysql:
build:
context: ./docker/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database_name
MYSQL_USER: database_user
MYSQL_PASSWORD: database_password
volumes:
- /config/scripts:/docker-entrypoint-initdb.d
restart: always
ports:
- "3306:3306"
networks:
vpcbr:
ipv4_address: 10.3.0.4

networks:
vpcbr:
driver: bridge
ipam:
config:
- subnet: 10.3.0.0/16
gateway: 10.3.0.1

关于docker - Docker-容器IP地址映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53256950/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com