我才刚开始学码头。我有一个群集运行,我试图让我的asp.net核心应用程序与一个红色服务器通信。我没想到我会有这么多问题
我的船坞-写作:
version: ‘3.3’
services:
webfarm_api:
image: dispersia/webfarm.api
ports:
- 8080:80
environment:
- SERVICE_PORTS=8080
depends_on:
- webfarm_redis
webfarm_redis:
image: dispersia/redis
ports:
- 6379:6379
volumes:
- ‘redis:/data’
volumes:
redis:我已经将我的redis.conf设置为绑定到0.0.0.0,在我的应用程序中
services.AddDistributedRedisCache(options =>
{
options.Configuration = “0.0.0.0”;
options.InstanceName = “redisInstance”;
});如果我手动运行一个redis服务器和我的asp.net核心应用程序之外的码头,他们看到了彼此和所有的工作,但我不能为我的生活使它在码头内工作。
如果我运行码头检查网络prod_default,我会发现两个容器都在运行,它们确实有不同的IP (10.0.0.6/24)和(10.0.0.4/24),但是我认为0.0.0.0将允许任何容器在同一个网络中看到它。如果我的假设有误,请告诉我。
这是让这些容器沟通的正确方式吗?
谢谢
发布于 2018-01-17 22:44:26
127.0.0.1vs 0.0.0.0取自https://superuser.com/questions/949428/whats-the-difference-between-127-0-0-1-and-0-0-0-0的描述
127.0.0.1和0.0.0.0有什么区别?
127.0.0.1是环回地址(也称为localhost)。
0.0.0.0是一个不可路由的元地址,用于指定无效、未知或不适用的目标(无特定地址占位符)。
在路由条目的上下文中,它通常意味着默认的路由。
在服务器上下文中,
0.0.0.0的意思是“本地计算机上的所有IPv4地址”。如果一个主机有两个IP地址,192.168.1.1和10.1.2.1,并且在主机上运行的服务器在0.0.0.0上侦听,那么在这两个IP上都可以找到它。
那这是什么意思?这意味着在您的独立应用程序容器中,您告诉应用程序查看这个端口上的Redis实例的本地主机,这不是真的,因为Redis运行在一个单独的孤立Redis容器中。
您想要做的是在您的应用程序中使用您的webfarm_redis名称,这将询问Docker服务在哪里webfarm_redis,它将给您码头的Redis IP。
services.AddDistributedRedisCache(options =>
{
options.Configuration = “webfarm_redis”;
options.InstanceName = “redisInstance”;
});我会将webfarm_redis作为环境变量传递,这样就可以在不重新构建的情况下对其进行更改。
https://stackoverflow.com/questions/48309079
复制相似问题