首先應該知道MySQL 的前置知識,如MySQL IP 端口密碼等基礎知識
乾貨部分
- docker 環境
yum install -y docker ;service docker start;
- 拉取MySQL 鏡像
docker pull mysql:8.0.17
- 啓動鏡像
mkdir -p /data/docker/mysql
docker run -p 3306:3306 --restart=always --name mysql8 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=root -v /data/docker/mysql:/var/lib/mysql --privileged=true mysql:8.0.17 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
- 檢測鏡像啓動
docker ps
如果有則成功,沒有則需要查看日誌 docker logs mysql8
分析原因後,刪除這個失敗鏡像docker rm mysql8
運行第三步
- 遠程連接
拿客戶端連接 - 涉及的相關命令
- docker start/top/restart 容器別名或id 容器啓動/停止/重啓
原理部分
-
首先具備docker 環境 ,使用
yum -y docker
安裝 加 -y 免除確認環節 docker 就是名字了 -
拉取鏡像
docker 鏡像可以在https://hub.docker.com/_/mysql?tab=description
中看到
頁面tab 分三列description
reviews
tags
主要看第一列描述
和 第三列tag
拉取鏡像命令docker pull mysql:8.0.17
docker 是固定使用docker 操作
pull 拉取鏡像
後面接上鏡像名:版本號mysql:8.0.17
版本號不加mysql
表示拉取最新版本 -
拉取鏡像後啓動鏡像
docker run -p 3306:3306 --restart=always --name mysql8 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=root -v /data/docker/mysql:/var/lib/mysql --privileged=true mysql:8.0.17 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
docker run
docker 運行一個鏡像 後面接相關參數
-p 3306:3306
表示暴露端口,因爲docker 是有容器概念 ,鏡像啓動在docker容器中 和外面的操作系統可以將容器理解爲系統內部的小虛擬機
所以外面訪問裏面需要的端口關聯起來-p 3306:3306
前面的-p
代表這一條命令的作用端口關聯
後面的3306:3306
前面是系統端口 後面的是鏡像內部端口
.一般鏡像外部端口會和內部一樣,除非你弄多個鏡像一起運行
--restart=always
表示自動重啓 , 如果外部系統重啓後,docker 自動運行後 鏡像也會自動重啓
--name mysql8
給這個鏡像運行起個別名 隨便定義,一般以好記爲主,不定義會隨機命名,同時後面的如查詢日誌docker logs mysql8
如果不記得別名 一般都是輸入容器id
-e TZ=Asia/Shanghai
-e
開頭都是MySQL運行的設置與docker無關,因此這些設置可以在descrption
中找到或者在mysql 教程文檔
中,如果配置內容多的花一般建議配置文件方式
,可以快捷鍵ctrl + f
關鍵字,TZ=Asia/Shanghai
時區設定爲亞洲上海時區,也就是北京時區 , 因爲時區和時間都是外面的,而且有時候服務器不在本地,時間不一致也是個很頭疼的問題
-e MYSQL_ROOT_PASSWORD=root
設定密碼
-v /data/docker/mysql:/var/lib/mysql --privileged=true
掛載目錄,因爲docker 容器重啓後你的數據庫內容就沒了,所以如何保證重啓數據不失效,就要把文件掛在外部一個目錄中--privileged=true
是保證掛載權限 , 同理也可以將日誌等內容掛載在外部
mysql:8.0.17
這是鏡像的名字和版本號 如果不加版本號默認啓動最新版本latest
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
指定字符集 , 亂碼問題很頭疼的 -
檢測
docker ps
可以查看docker 中正常運行
的全部容器 如果發現沒有則啓動失敗有異常,使用docker log 容器別名或者容器id
查看日誌
然後必須刪除容器docker rm 容器別名或id
後再運行 , 因爲失敗運行容器也會佔有別名 可以使用docker ps -a
查看全部
同時如果容器正在運行如果需要刪除先得停下docker stop 容器別名或id
-
最後成功用客戶端連接