我是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)?
谢谢!
答案 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。它开始起作用了。