docker容器端口號映射書寫錯誤導致無法訪問容器內的服務

docker容器端口號映射書寫錯誤導致無法訪問容器內的服務

最近在自學docker,剛好懶得裝mysql了,想直接利用容器搞一個mysql就好了,於是利用docker拉取鏡像。步驟如下:

#	拉取mysql鏡像
docker pull mysql:5.7
# 	查看鏡像
docker images
#	啓動容器
#	-itd 後臺運行等  -p 端口映射  --name  容器名字  -e  啓動環境變量(這裏設置root賬號的密碼)
docker run -itd -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

一切行雲流水,mysql就這樣裝好了,用navicat連接一下,沒問題。

問題的產生

隨後我又想,啥時候搞個集羣不是很方便嗎?試一下啓動多個mysql容器,命令如下:

docker run -itd -p 13306:13306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

然後用navicat連接,各種連接不上。要麼是1060或者1061錯誤。後來各種百度,密碼訪問權限各種一頓折騰,無果。後來直接受不了了,問問朋友吧。

後來才知道:-p 只是端口映射,我理解成啓動的時候不僅端口映射,還會修改容器內服務的啓動端口號。內部服務啓動端口號要變化必須修改容器內部的配置文件才行,-p啓動參數是不行的

所以啓動命令應該如下:

docker run -p {映射主機端口}:{需要暴露的容器端口}
#	容器內mysql的啓動端口號是3306,所以容器一定是暴露3306端口號(除非修改容器的配置文件,修改mysql的啓動端口號)。
docker run -itd -p 13306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

這樣navicat就可以連上localhost:13306的mysql服務了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章