說明:最近在學習Docker,打算記錄一下學習過程,不會從安裝開始,只記錄遇到的問題以及個人覺得“真香”的玩法。
后悔沒有早點學習,這幾天才發現是真的香啊,即使已經有了k8s,但我總覺得學習容器技術,也要先從Docker開始。話不多說,進入正題。
問題:在docker中安裝並啟動mysql,掛載本地目錄到容器,在本地使用Navicat連接容器中的數據庫,實現數據同步。
一、在docker中運行mysql鏡像
1、查詢mysql鏡像
docker images
2、啟動並掛載msyql數據目錄到本地指定目錄
docker run -p 3307:3306 --name mysql -v /Users/hyc/DockerStudy/mysql/log:/var/log/mysql -v /Users/hyc/DockerStudy/mysql/data:/var/lib/mysql -v /Users/hyc/DockerStudy/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
3、查看docker容器是否啟動
docker ps
mysql已經啟動,下面進入容器去連接mysql
4、進入容器連接mysql
docker exec -it 2e0e37441a3e /bin/bash mysql -u root -p
5、本地連接容器數據庫
點擊測試連接,發現成功;
6、測試數據同步問題
在本地新建數據庫docker和docker_test表並插入一些數據后,去容器查看,發現數據已經同步到了容器
7、刪除容器
將運行的容器刪除后,發現本地連接失敗
docker rm -f 2e0e37441a3e
刷新本地連接報錯如下
8、重新使用之前的命令運行容器
docker run -p 3307:3306 --name mysql -v /Users/hyc/DockerStudy/mysql/log:/var/log/mysql -v /Users/hyc/DockerStudy/mysql/data:/var/lib/mysql -v /Users/hyc/DockerStudy/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
查看數據,發現數據也依然存在,並沒有因為數容器的刪除而刪除
通過上面的操作發現,只要在docker中運行mysql鏡像,通過數據卷技術(后面細說)將本地目錄掛載到容器中的指定目錄,就能實現本地與容器間的數據同步,所以以后就不用在本地傻傻的安裝數據庫(還有別的軟件)了,
是真的香啊!!!