我有一个这样的码头:
version: '3.5'
services:
RedisServerA:
container_name: RedisServerA
image: redis:3.2.11
command: "redis-server --port 26379"
volumes:
- ../docker/redis/RedisServerA:/data
ports:
- 26379:26379
expose:
- 26379
RedisServerB:
container_name: RedisServerB
image: redis:3.2.11
command: "redis-server --port 6379"
volumes:
- ../docker/redis/RedisServerB:/data
ports:
- 6379:6379
expose:
- 6379现在我做一个vagrant ssh,然后做
ping RedisServerA
ping RedisServerB它们都能工作。
现在我尝试连接到redis服务器:
redis-cli -h RedisServerB工作正常
然后我试着连接到另一个
redis-cli -h RedisServerA -p 26739上面写着:
Could not connect to Redis at RedisServerA:26739: Connection refused
Could not connect to Redis at RedisServerA:26739: Connection refused两次。
这里我漏掉了什么?
发布于 2019-05-09 17:43:10
通常,在此设置中,您会让每个容器在其“自然”端口上运行。对于来自外部Docker的连接,您需要ports:映射,并且您将通过主机IP地址上的发布端口访问容器。对于Docker容器之间的连接(假设它们在同一网络上,如果您使用的是bare docker run,则手动创建该网络),您使用容器名称和容器的内部端口号。
我们可以通过删除一些不必要的行(container_name:和expose:实际上没有实际效果)来清理docker-compose.yml文件,并让映像在默认端口上运行其默认command:,并且只使用ports:重新映射。我们会得到:
version: '3.5'
services:
RedisServerA:
image: redis:3.2.11
volumes:
- ../docker/redis/RedisServerA:/data
ports:
- 26379:6379
RedisServerB:
image: redis:3.2.11
volumes:
- ../docker/redis/RedisServerB:/data
ports:
- 6379:6379在容器之间,您将使用缺省端口
redis-cli -h RedisServerA
redis-cli -h RedisServerB在Docker外部,您可以使用服务器的主机名和发布的端口
redis-cli -h server.example.com -p 23679
redis-cli -h server.example.comhttps://stackoverflow.com/questions/56056046
复制相似问题