当尝试将3个Redis示例作为3个Docker容器(1个主节点和2个从节点)运行时,我收到主节点的以下错误:2023-11-18 11:12:57 1:M 18 Nov 2023 08:12:57.243 #警告:无法创建服务器TCP侦听套接字172.28.0.1:6379:bind:Cannot assign requested address 2023-11-18 11:12:57 1:M 18 Nov 2023 08:12:57.243 #在端口6379(tcp)上侦听失败,中止。
有时我得到类似的错误第二个从节点,但有时它的工作正常。
我的docker-compose文件:
networks:
hl-lab3-network:
ipam:
driver: default
config:
- subnet: 172.28.0.0/16
services:
server:
build:
context: ./server_component
env_file:
- .env
ports:
- "${PORT}:${PORT}"
client:
build:
context: ./client_component
redis-master:
image: redis:7
container_name: master
command: bash -c "redis-server ./redis-master.conf --appendonly yes --requirepass password"
ports:
- 6379:6379
networks:
- hl-lab3-network
volumes:
- ./:/data
redis-slave-1:
image: redis:7
container_name: slave-1
command: redis-server ./redis-slave1.conf --replicaof master 6379 --requirepass password
ports:
- 6381:6381
networks:
- hl-lab3-network
volumes:
- ./redis-slave1.conf:/data/redis-slave1.conf
redis-slave-2:
image: redis:7
container_name: slave-2
command: redis-server ./redis-slave2.conf --replicaof master 6379 --requirepass password
ports:
- 6382:6382
networks:
- hl-lab3-network
volumes:
- ./redis-slave2.conf:/data/redis-slave2.conf
字符串
我的配置文件:
redis-master.conf
port 6379
bind 172.28.0.1
requirepass password
replica-read-only yes
型
redis-slave1.conf
port 6381
bind 172.28.0.2
masterauth password
replica-read-only yes
slaveof master 6379
型
redis-slave2.conf
port 6382
bind 172.28.0.3
masterauth password
replica-read-only yes
slaveof master 6379
型
我该怎么弥补?
我试着改变端口和IP地址几次,但它根本没有帮助。
1条答案
按热度按时间brqmpdu11#
在Docker环境中,通常依赖Docker内部网络就足够了。请尝试在.conf文件中将'bind'设置为'0.0.0.0',或者完全删除'bind'行。
有一种可能性是,当你在redis配置中显式指定ip地址时,docker并不知道它。当docker尝试动态设置它的ip时,它会失败,容器不会启动。如果你仍然不想让docker自己确定ip地址,那么你可以显式设置ip。
举例来说:
字符串