无法从群集和主机内部与Docker容器连接

时间:2017-08-04 21:49:33

标签: docker asp.net-core docker-compose docker-for-windows

我正在撰写两个容器,一个包含Web服务,另一个包含数据库 这是我的撰写文件:

version: '3.3'
services:
  web:
    image: microsoft/aspnetcore:1.1
    container_name: web
    ports:
    - 5555:80
    links:
    - db
  db:
    image: microsoft/mssql-server-linux:rc1
    container_name: db
    ports:
    - 1533:1433
    environment:
    - "ACCEPT_EULA=Y"
    - "MSSQL_SA_PASSWORD=MyAdminPwd2017"
    - "MSSQL_PID=Developer"

因此,从我在web服务中运行的asp.net核心应用程序,我只需使用db作为主机名即可访问db的数据库。但是db在主机上是不可见的(我有一个默认的桥接网络)。我可以从主机访问我的数据库,如果我检查正在运行的数据库容器并找到它的IP地址,那么我可以连接到<ip>,1533

问题是,web容器和主机都使用存储访问数据库的凭据的文件。所以我需要一种方法来命名db,这样我就可以从两个世界(在群内和外面,从我的主机)访问

有没有办法实现这一目标?我尝试在我的docker-compose文件中定义一个主机网络并让两个服务都使用该网络,但我得到一条消息说只有我可以定义一个主机网络。

编辑:试图改进问题标题,但我仍然不相信,欢迎改进

1 个答案:

答案 0 :(得分:0)

好的,那么,回答我自己的问题,我想要的是不可能的,至少从今天开始。

有人写了一篇很好的文章,说明为什么我无法实现我想要的目标。话虽如此,它在Windows容器中是可行的,但它可能是一个临时的“限制”。

链接到帖子:https://derickbailey.com/2016/08/29/so-youre-saying-docker-isnt-a-virtual-machine/ 并链接到Docker论坛:https://forums.docker.com/t/access-dockerized-services-via-the-containers-ip-address/21151