問題:
建立與執行實例在其中的MySQL 的連接主機系統中的Docker容器被證明不成功,導致錯誤2002.
Dockerfile 詳細資訊:
使用的Dockerfile 包括以下配置:
FROM ubuntu:14.04.3 RUN apt-get update && apt-get install -y mysql-server RUN grep -v bind-address /etc/mysql/my.cnf > temp.txt && mv temp.txt /etc/mysql/my.cnf EXPOSE 3306 CMD /etc/init.d/mysql start && tail -F /var/log/mysql.log
使用的Dockerfile 包括以下配置:
使用的Dockerfile 包括以下配置:
雖然映像初始化沒有問題,但會嘗試連線從主機使用指令mysql -P 12345 -uroot產生上述結果錯誤。
解決方案:mysql -h localhost -P 3306 --protocol=tcp -u root
連線規範:
要連接到Docker 容器內的MySQL 實例,如下mysql 指令時需要提供正確的參數host:
這裡,-h localhost 指定主機,-P 3306 指定連接埠(在本例中為 12345),--protocol=tcp 表示應透過 TCP/ 建立連線IP 而非套接字連線。
Socket限制:在 Docker 容器內,MySQL 綁定到所有網路接口,不包括 localhost。由於主機系統無法存取套接字,因此必須使用 TCP/IP 進行通訊。透過在mysql指令中指定--protocol=tcp,透過連接埠3306建立連線成功。以上是如何從我的主機連接到 Docker MySQL 容器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!