无法与群集内的Docker容器和主机连接
我正在编写两个容器,一个是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
是不可见的主机(我有一个默认桥networking)。 我可以从主机访问我的数据库,如果我检查正在运行的db容器,并find它的IP地址,那么我可以连接到<ip>,1533
。
事情是, web
容器和主机都使用存储访问数据库的凭证的文件。 所以我需要一种方法来命名db
这样我就可以从两个世界访问(在我的主机内部和外部)
有没有办法做到这一点? 我试图在我的docker-compose
文件中定义一个主机networking,并且两个服务都使用这个networking,但是我收到一条消息,说只有一个主机networking可以被定义。
编辑:试图改善问题标题,但我仍然不相信,改进是值得欢迎的
好吧,回答我自己的问题,至less从今天起,我想要的是不可能的。
有人写了一篇很好的文章,为什么我不能达到我想要的。 话虽如此,在Windows Containers中是可行的,但它可能是一个暂时的“限制”。
链接到该post: https://derickbailey.com/2016/08/29/so-youre-saying-docker-isnt-a-virtual-machine/并链接到Docker论坛: https://forums.docker。 COM / T /访问dockerized服务-通过最集装箱-IP地址/ 21151