目錄
- 1. 檢查WSL配置
- 2. 設置WSL版本
- 3. 拉取MySQL鏡像
- 4. 驗證鏡像
- 5. 運行MySQL容器
- 在WSL環境中使用以下命令啟動MySQL容器
- 查看容器/鏡像的完整信息
- 顯式指定宿主機掛載路徑
- 可選:在Windows的cmd中使用以下命令啟動MySQL容器
- 6. 管理容器
- 啟動已創建的容器
- 查看運行中的容器
- 查看容器的日志
- 通過docker進入mysql命令行
- 7. 連接通過Docker部署的MySQL容器
- 8. Redis部署
1. 檢查WSL配置
檢查當前 Windows Subsystem for Linux (WSL) 的配置,確保Linux系統和docker桌面版使用同一個版本的WSL
wsl --list --verbose
2. 設置WSL版本
如果WSL版本不統一,可通過以下命令更改WSL配置
wsl --set-version <distribution name> <versionNumber>
wsl --set-version Ubuntu-22.04 2
參考網址:將 WSL 版本設置為 1 或 2
3. 拉取MySQL鏡像
從Docker Hub拉取MySQL鏡像:
docker pull mysql:8.4
檢查已下載的Docker鏡像:
4. 驗證鏡像
docker images
5. 運行MySQL容器
在WSL環境中使用以下命令啟動MySQL容器
docker run -p 4406:3306 --name mysql-8.4 \
-v "mysql-data:/var/lib/mysql" \
-v "mysql-conf:/etc/mysql/conf.d" \
-v "mysql-log:/var/log/mysql" \
-v "mysql-files:/var/lib/mysql-files" \
-e MYSQL_ROOT_PASSWORD=root -d mysql:8.4 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
在創建容器時,若未顯式指定宿主機掛載路徑,Docker將自動生成/var/lib/docker/volumes/mysql-data/_data
等匿名卷,并與MySQL容器建立掛載關聯 參考文章:docker安裝mysql并實現數據卷掛載
查看容器/鏡像的完整信息
docker inspect mysql-8.4
"Mounts": [{"Type": "volume","Name": "mysql-data","Source": "/var/lib/docker/volumes/mysql-data/_data","Destination": "/var/lib/mysql","Driver": "local","Mode": "z","RW": true,"Propagation": ""},...
]
顯式指定宿主機掛載路徑
docker run -p 4406:3306 --name mysql-8.4 \-v "/var/lib/docker/mysql8.4/data:/var/lib/mysql" \-v "/var/lib/docker/mysql8.4/conf:/etc/mysql/conf.d" \-v "/var/lib/docker/mysql8.4/log:/var/log/mysql" \-v "/var/lib/docker/mysql8.4/mysql-files:/var/lib/mysql-files" \-e MYSQL_ROOT_PASSWORD=root -d mysql:8.4 \--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
"Mounts": [{"Source": "/var/lib/docker/mysql8.4/data","Destination": "/var/lib/mysql","Mode": "","RW": true,"Propagation": "rprivate"},...
}
可選:在Windows的cmd中使用以下命令啟動MySQL容器
docker run -p 4406:3306 --name mysql-8.4 -v "mysql-data:/var/lib/mysql" -v "mysql-conf:/etc/mysql/conf.d" -v "mysql-log:/var/log/mysql" -v "mysql-files:/var/lib/mysql-files" -e MYSQL_ROOT_PASSWORD=root -d mysql:8.4 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
這個 docker run
命令用于啟動一個 MySQL 8.4 容器,并將數據、配置和日志持久化存儲在宿主機的 /mnt/d/docker/mysql8.4/
目錄下。下面是對每個參數的詳細解釋:
參數 | 說明 |
---|---|
docker run | 啟動一個新容器 |
-p 4406:3306 | 端口映射:將宿主機的 4406 端口映射到容器的 3306 (MySQL 默認端口) |
--name mysql-8.4 | 為容器指定名稱 mysql-8.4 |
-d | 后臺運行容器(守護進程模式) |
mysql:8.4 | 使用的鏡像 |
6. 管理容器
啟動已創建的容器
docker start mysql-8.4
查看運行中的容器
docker ps
查看容器的日志
docker logs mysql-8.4
通過docker進入mysql命令行
docker exec -it mysql bash
按住Ctrl+d
可退出mysql命令行
查看文件資源在宿主機的映射
對比mysql容器內部文件發現所有文件成功映射
7. 連接通過Docker部署的MySQL容器
注意此處的端口為將容器的3306
端口的映射到宿主機的4406
端口
8. Redis部署
同樣的啟動方法可以在docker部署Redis容器(WSL)
docker pull redis:8.0.2
cd /var/lib/docker/redis8/conf/
sudo touch redis.conf
sudo chmod 777 redis.conf
vim redis.conf
在redis.conf中使用vim編輯器寫入
requirepass [your_password] # 設置密碼
appendonly yes # 持久層相關
docker run -p 5379:6379 --name redis-8.0.2 \
-v /var/lib/docker/redis8/data:/data \
-v /var/lib/docker/redis8/conf/redis.conf:/etc/redis/redis.conf \
-d redis:8.0.2 \
redis-server /etc/redis/redis.conf
docker start redis-8.0.2
docker exec -it redis-8.0.2 bash
# redis-cli
> auth mq20011103
OK
> set name abc
OK
> get name
"abc"
>