2015-07-20 69 views
0

我是碼頭工人,我試圖測試一些東西。從docs我看到我們可以映射容器和主機之間的端口。容器和主機之間的碼頭端口轉發

所以我拉mariadb回購並運行一個容器這樣

$ docker run -p 127.0.0.1:3307:3306 --name mdb -e MYSQL_ROOT_PASSWORD=docker -d mariadb 

這將綁定端口3306的容器內,以3307端口的主機上的本地主機或127.0.0.1接口。

,它創造的容器,我$ docker ps

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到端口,我沒有什麼

$ 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 

我這樣做becouse我我在3306端口上運行了一個mysql,我不想惹這個問題。我嘗試在-p選項上切換訂單,而在telnet上也沒有任何操作。你能幫我看看我做錯了什麼嗎?

(還有我在OSX 10.9.5跑過來boot2docker

回答

0

基本問題是,如果您使用的是boot2docker,則需要在boot2docker虛擬機上尋址本地主機,而不是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 

但顯然你不希望每次ssh到虛擬機。所以我只需要用boot2docker虛擬機的IP替換127.0.0.1,就完成了:

$ telnet $(boot2docker ip) 3307 
相關問題