我正在使用docker在我的本地机器上运行我的web应用程序,并且我已经在主机上使用SoapUI创建了模拟的web服务。
mocked服务可以通过localhost:8099和IP 127.0.0.1:8099访问(使用telnet),但是我不能从运行docker容器访问它。
我读过一些文章,介绍如何通过
ip addr show docker0
结果如下:
5: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42
我从这里拉出了MySQL 5.7容器:
下面是我如何运行它:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=pwd -d mysql:5.7
它工作得很好,我可以从我的主机连接到MySQL数据库。
但是,当我尝试运行另一个容器时,使用如下链接的mysql容器:
docker run --link mysql:mysql -p 8080:8080 -d app:dev
我的容器无法连接到mysql
# 172.17.0.3 is mysql's ip taken from /etc/hosts of another
在我的mac上试用Kubernetes,跟踪并使用docker,我不明白为什么我需要这个步骤:
Note: On OS/X you will need to set up port forwarding via ssh:
boot2docker ssh -L8080:localhost:8080
api服务器正在使用--net=host运行,所以我应该能够使用curl <ip-of-my-docker-machine>:8080,但是我被“拒绝连接”。用ssh设置端口转发解决了这个问题,但我仍然不明白为什么不能直接卷曲主机。任何解释都会很好。