【发布时间】:2019-08-31 00:48:27
【问题描述】:
我想运行到同一网络中的容器:
docker-compose.yml:
version: '2.1'
services:
web:
build:
context: ./src/web
dockerfile: web.Dockerfile
image: somethingWeb
container_name: smt-web
mem_limit: 2G
restart: on-failure
depends_on:
- db
db:
build:
context: ./src/db
dockerfile: db.Dockerfile
image: somethingDB
container_name: smt-db
ports:
- ${EXPOSED_SQLSERVER_PORT?err}:1433
environment:
sa_password: "Lfdc82zo!"
ACCEPT_EULA: "Y"
但是没有从 web 到 db 的 ping:
PS C:\> ping db
Pinging db [172.24.248.112] with 32 bytes of data:
Request timed out.
Request timed out.
Ping statistics for 172.24.248.112:
Packets: Sent = 2, Received = 0, Lost = 2 (100% loss),
我在作为主机的 vmware ESXI 上运行 Windows Server 2016。和容器也是 windows server 2016 映像。
有什么建议可以解决我的容器到容器的隔离问题吗?
根据this microsoft's article 的 NAT 网络,我将 Hyper-V 功能添加到 windows server 2016 (from this) 并启用了 Hyper-V。
这些是我的 docker 网络:
λ docker network ls
NETWORK ID NAME DRIVER SCOPE
bb82f97a3679 mehdi_default nat local
ee22d8faad51 nat nat local
0e05aee3cc5f none null local
【问题讨论】:
-
Pinging db [172.24.248.112]表明 docker 网络配置正确(它获取了db的 IP 地址)。 Ping 可能不是最好的工具,您的数据库在预期的端口上没有响应吗?是否设置为监听所有接口? -
容器无法看到另一个容器。每个容器中的端口侦听都可以。从容器中我可以看到端口和 IP。但容器到容器的连接是不可能的。他们还加入了创建的 docker-compose nat 网络!
-
docker service ls显示什么? -
我没有为这台机器设置 Swarm。我只想用 docker-compose 将我的 web 容器连接到 db 容器。这就是我在 Windows 10 中遵循的方式,但在 Windows Server 2016 上却没有。
标签: docker windows-server-2016 docker-for-windows docker-networking