无法连接到Windows上的Docker容器

时间:2016-07-07 11:30:10

标签: docker docker-compose

我是Docker的新手。 我下载了图像并使用命令

启动了容器
docker-compose up -d

我有一个容器配置文件:

    algotrader:
  image: algotrader/algotrader
  command: -i
  links:
    - mysql
    - ibgateway
  ports:
    - 9090:9090
    - 61614:61614

ibgateway:
  image: algotrader/ibgateway
  environment:
    TWS_USERNAME: edemo
    TWS_PASSWORD: demouser
  volumes:
    - /var/lib/tws

mysql:
  image: mysql
  environment:
    MYSQL_ROOT_PASSWORD: password
    MYSQL_DATABASE: algotrader
  ports:
    - 3306:3306
  volumes:
    - /var/lib/mysql

当我运行命令

docker ps

它显示了在Docker容器中运行的应用程序列表:

c:\Program Files\Docker\Docker\resources>docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                                  NAMES
1e7fe9da1ad7        algotrader/algotrader   "bin/docker-run.sh -i"   28 hours ago        Up About an hour    10.0.75.2:9090->9090/tcp, 10.0.75.2:61614->61614/tcp   docker_algotrader_1
72fe4fd2bfb8        algotrader/ibgateway    "/usr/local/ibgateway"   28 hours ago        Up About an hour    4001/tcp                                               docker_ibgateway_1
3b739113b4e9        mysql                   "docker-entrypoint.sh"   28 hours ago        Up About an hour    10.0.75.2:3306->3306/tcp                               docker_mysql_1
c367f3dca162        algotrader/ibgateway    "/usr/local/ibgateway"   28 hours ago        Up 26 minutes       4001/tcp                                               resources_ibgateway_1

但是当我运行命令获取IP地址时:

docker-machine ls

它显示了我的空机器清单:

c:\Program Files\Docker\Docker\resources>docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM   DOCKER   ERRORS

此外,我可以连接到该容器上的bash:

docker exec -it 1e7fe9da1ad7 bash

内部容器ping到IP地址172.17.0.4正在运行,但不是来自Windows:

root@1e7fe9da1ad7:/usr/local/algotrader# ping 172.17.0.4
PING 172.17.0.4 (172.17.0.4): 56 data bytes
64 bytes from 172.17.0.4: icmp_seq=0 ttl=64 time=0.055 ms

通过文档,它应该能够连接到端口9090,但是从Windows这个地址不可用。

你知道如何获得正确的地址或检查是否关闭到外面(Windows)?

谢谢!

2 个答案:

答案 0 :(得分:0)

从Windows,您需要VM的IP(docker-machine ip <yourMachine>或Hyper-V) 使用VirtualBox时,请参阅“How do I configure docker compose to expose ports correctly?”作为示例。

然后,您需要将9090移植到Windows主机,才能直接从Windows访问该端口。

答案 1 :(得分:0)

我刚从头开始重新安装Windows上的Docker Tools。它开始起作用了。