Docker部署MySQL并實現(xiàn)客戶端連接
準(zhǔn)備工作
在docker內(nèi)部署任何應(yīng)用,都需要先下載對應(yīng)的鏡像;下載鏡像之前,需要先搜索鏡像來確認(rèn)該鏡像是否存在:
docker search mysql

從列表可以看到,docker已經(jīng)有了mysql的鏡像,名稱是“mysql”,接下來下載鏡像:
docker pull mysql

下載完成后,查看一下本地鏡像:

如果在列表中看到mysql,鏡像下載就已經(jīng)成功了。
容器設(shè)置
在docker中,真正運行的是容器,鏡像在我理解中是一種環(huán)境。我們在指定的鏡像中運行某個容器,然后編輯和配置這個容器,從而達(dá)到想要的效果。使用以下命令運行一個mysql容器:
docker run -d -it -p 3306:3306 --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 mysql

解釋一下
- -d:代表后臺運行,并返回容器的ID;
- -it:是一個組合命令,可以使容器在運行時不會阻塞當(dāng)前操作界面。(另一種寫法是 -i -t );
- -p 3306:3306:將宿主機(jī)上的端口映射到容器對應(yīng)端口;
- -e MYSQL_ROOT_PASSWORD=123456:設(shè)置環(huán)境變量,此處是設(shè)置root用戶密碼為123456;
- --name mysql01:自定義容器名稱為mysql01;
最后的mysql:鏡像的名稱。
這行命令的結(jié)果是在mysql鏡像中運行了一個名為mysql01的容器,并且root用戶的密碼是123456。接下來看一下容器有沒有正常運行:

看到STATUS那一欄是Up開頭就代表啟動成功了。
Docker下的Mysql操作
容器創(chuàng)建好以后,可以使用exec命令進(jìn)入容器去操作:
docker exec -it mysql01 bash
進(jìn)入容器以后,使用剛才設(shè)置好的賬戶密碼登陸mysql:

登陸成功后,就可以按照mysql的命令去操作表庫了。因為mysql和dockers容器的退出指令都是exit,所以如果要回到根目錄,先輸入exit退出mysql,再輸入exit退出容器。
客戶端連接Docker容器下的Mysql
上面已經(jīng)實現(xiàn)了docker內(nèi)操作mysql,但全命令行的操作很費時,這顯然不符合高效開發(fā)同學(xué)們的要求,所以現(xiàn)在有個簡單的方法,就是使用客戶端連接docker容器下的mysql。
我們知道docker是運行在虛擬機(jī)環(huán)境下的,虛擬機(jī)有單獨的IP地址和端口,只要找到docker所在虛擬機(jī)的IP即可使用客戶端連接到docker容器下的mysql。但是直接去連肯定會失敗,為什么?兩個原因:
- 1、因為docker容器也擁有獨立的端口和IP,所以直接訪問docker所在虛擬機(jī)的IP是訪問不到的,因此需要將docker容器的端口映射到docker所在主機(jī)的端口上。
- 2、因為mysql默認(rèn)不允許遠(yuǎn)程連接。
端口映射在前面已經(jīng)做好了,所以現(xiàn)在只需要修改mysql允許所有連接即可。登陸docker容器的mysql,輸入以下命令:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
成功以后,另外打開一個cmd,輸入ipconfig列出所有IP:

紅框圈起來的就是虛擬機(jī)在用的IP了,使用這個IP和剛才設(shè)置的賬戶密碼就可以用客戶端連接了:

(如果本機(jī)沒有MySql,直接用localhost也是可以成功登陸navicat的。)
測試
通過navicat創(chuàng)建一個數(shù)據(jù)庫docker_mysql:

然后切換到docker環(huán)境,進(jìn)入mysql01容器,查看所有數(shù)據(jù)庫:

使用客戶端創(chuàng)建的數(shù)據(jù)庫在容器內(nèi)也可以查到,測試成功。
需要注意的一點是,docker一但停止運行,關(guān)聯(lián)的虛擬機(jī)也會被釋放,所有數(shù)據(jù)都會隨之消失。資料卷可以解決這個問題,但是本文篇幅有限,后面幾篇文章會詳述這個問題。
到此這篇關(guān)于Docker部署MySQL并實現(xiàn)客戶端連接的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于docker部署的jenkins跑git上的程序的問題
這篇文章主要介紹了docker部署的jenkins跑git上的程序的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
supervisor下的Dockerfile的多服務(wù)鏡像封裝操作
這篇文章主要介紹了supervisor下的Dockerfile的多服務(wù)鏡像封裝操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
harbor可視化私有鏡像倉庫環(huán)境及服務(wù)部署示例
這篇文章主要為大家介紹了harbor可視化私有鏡像倉庫環(huán)境及服務(wù)部署示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
Docker 安裝 Jenkins 并解決初始安裝插件失敗問題
這篇文章主要介紹了Docker 安裝 Jenkins 并解決初始安裝插件失敗問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04
Docker+Jupyter 部署算力服務(wù)的解決方案
Docker+Jupyter部署算力服務(wù)為AI學(xué)習(xí)框架提供了一種高效的發(fā)布和使用方案,本文以Windows環(huán)境為例,介紹了如何下載安裝Docker工具,以及如何根據(jù)AI框架所需的Python版本拉取合適的Jupyter鏡像,本文介紹了Docker+Jupyter 部署算力服務(wù)的相關(guān)知識,一起看看吧2024-11-11
Docker使用Bind9實現(xiàn)域名解析的思路詳解
這篇文章主要介紹了DOCKER使用BIND9實現(xiàn)域名解析,主要包括刷新服務(wù)修改配置文件信息,實現(xiàn)思路也很簡單,本文給大家介紹的非常詳細(xì)對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-11-11

