我是码头工的新人,我正在尝试测试一些东西。从docs我看到我们可以在容器和主机之间映射端口。
所以我拉了$ docker run -p 127.0.0.1:3307:3306 --name mdb -e MYSQL_ROOT_PASSWORD=docker -d mariadb
repo并运行像这样的容器
$ docker ps
这会将容器内的端口3306绑定到localhost上的端口3307或主机上的127.0.0.1接口。
它创建了容器,我用CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7d30562194c mariadb "/docker-entrypoint. About an hour ago Up 6 minutes 127.0.0.1:3307->3306/tcp mdb
$ telnet 127.0.0.1 3307
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host
但是当我telnet到端口时,我什么也没得到
mysql
我这样做是因为我在3306端口运行-p
,我不想搞砸。我尝试在boot2docker
选项上切换订单,在telnet上也没有。你能帮我看看我做错了吗?
(我也在OSX 10.9.5
上运行data = Data([
Bar(
x=[tuples[0] for tuples in tuples_list],
y=[tuples[1] for tuples in tuples_list]
)
])
layout = dict(
title='Public Video Analysis',
yaxis=YAxis(
title = 'Views'),
xaxis1=XAxis(
title = "Duration in Seconds"),
)
fig = Figure(data=data, layout=layout)
py.iplot(fig)
)
答案 0 :(得分:0)
如果您使用的是boot2docker,那意味着您需要在VM级别转发该端口:
VBoxManage controlvm boot2docker-vm natpf1 "name,tcp,127.0.0.1,3307,,3307"
请参阅:
答案 1 :(得分:0)
基本问题是,如果您使用boot2docker
,则需要在boot2docker VM上寻址localhost,而不是Mac。
为了解决问题,这应该有效:
$ boot2docker ssh
...
$ docker run -p 127.0.0.1:3307:3306 --name mdb -e MYSQL_ROOT_PASSWORD=docker -d mariadb
...
$ telnet 127.0.0.1 3307
但显然你不想每次都进入虚拟机。所以我只需用boot2docker VM的IP替换127.0.0.1,你就完成了:
$ telnet $(boot2docker ip) 3307