sudo docker run --name first-mysql2 -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=123456 -d mysql
生成容器為
087e18f3ab85 0977f3a915e5 "docker-entrypoint..." 23 seconds ago Up 20 seconds 0.0.0.0:3306->3306/tcp first-mysql2
sudo docker run --name first-mysql2 -p 3308:3308 -e MYSQL\_ROOT\_PASSWORD=123456 -d mysql
生成容器為
cbe8dad89801 0977f3a915e5 "docker-entrypoint..." 5 minutes ago Up 5 minutes 3306/tcp, 0.0.0.0:3308->3308/tcp first-mysql1
可以看到3308埠創建的容器在埠號那一列前面多了3306/tcp,不確定是不是這個原因,導致在用客戶端訪問mysql的時候只有3306埠才能訪問,3308無法訪問。
也并不是先后創建的問題,如果只用-p 3308:3308創建 在埠號那一列依舊是帶上3306/tcp 的,客戶端也是沒法訪問的。
有大神指點下嗎 是啥問題
uj5u.com熱心網友回復:
我沒有在docker 環境下安裝過mysql服務,我給個建議看看是不是可行的。mysql容器一:
sudo docker run --name first-mysql2 -p 13306:3306 -e MYSQL\_ROOT\_PASSWORD=123456 -d mysql
mysql容器二:
sudo docker run --name first-mysql2 -p 13307:3306 -e MYSQL\_ROOT\_PASSWORD=123456 -d mysql
這樣是否啟動了兩個容器分別使用 13306 和13307埠
uj5u.com熱心網友回復:
容器內部的埠只能是3306,這是mysql的默認埠,除非你改mysql鏡像的Dockerfile。uj5u.com熱心網友回復:
dock run 中的 -p 外部主機的埠 : docker內部服務的埠你3308要從外部訪問,你的確保對應的dockr 容器的 3308 是 mysql的埠才行,
或者你的本意應寫成 -p 3308:3306 才對。
uj5u.com熱心網友回復:
如果通過Link訪問 ,則使用的是 expose埠,如果是宿主機+映射port,則使用映射埠uj5u.com熱心網友回復:
樓主第二條執行是錯誤的,埠應該是宿主機的3308映射容器的3306埠,mysql默認是3306埠,樓主執行第二條命令回傳的結果中會有3306/tcp原因就是這個是容器的默認埠,容器中并沒有3308埠,所以樓主在用客戶端連接的時候會出現無法連接uj5u.com熱心網友回復:
學習了,不錯uj5u.com熱心網友回復:
一般來說,mysql的docker鏡像的默認IP是3306你可以先做一個自己的鏡像,鏡像中的mysql你可以安裝兩個mysql資料庫,使其埠分別為3306與3308
再用此鏡像生成容器
或者
你可以用你原來的那個鏡像,啟動了兩個容器,使用外部的埠3308 -p 3308:3306
uj5u.com熱心網友回復:
mysql默認連接埠就是3306你沒做特殊配置 那個3308是連不上mysql的
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/47494.html
標籤:Docker
下一篇:求助:華為云PaaS有哪些服務
