Docker for win10 桌面版的安裝及配置(偏向脫坑)
安裝
按照它的指引教程,無腦下一步即可
下載地址:
https://docs.docker.com/desktop/windows/install/
安裝完成后,它會有新手引導,按照上面的命令運行即可,大概4步做完后,docker就已經安裝完成。
此時可以通過查看版本號,查看docker的相關信息
docker -v
后續就可以在power shell中使用docker的命令來操作docker
例如:
配置
換源
使用國內源替代掉docker的默認源
"https://hub-mirror.c.163.com",
"https://ustc-edu-cn.mirror.aliyuncs.com",
"https://ghcr.io",
"https://mirror.baidubce.com"
測試
拉取Nginx鏡像
docker pull nginx:latest
端口映射+新建並啟動Nginx
docker run --name my-nginx -p 80:80 -d nginx
--name my-nginx 指定容器的名稱
-p 80:80 映射端口
-d 守護進程運行
nginx 鏡像版本,也可以指定版本,如:nginx:1.18.0
如果單純想啟動一個測試用的nginx就啟動完了,測試效果如下
停止+刪除nginx
stop代表停止,右邊的垃圾桶圖標則是刪除
命令行刪除:
docker網絡連接(真正的坑點)
出現連接容器的bug,大部分都是因為這個坑
Docker for win10的docker實際運行在新建的WSL2宿主機。那此時如何與Windows通信?
此時存在3個IP:
- docker容器的IP
- Linux宿主機IP
- 本地Windows IP
訪問哪個IP才能訪問到容器內部的應用?
使用常用的測試容器Nginx
測試結果:
可以看到使用localhost,即可訪問。這是WSL2的優化
同時,大量鏡像甚至沒有安裝net-tools,無法直接查看IP。即默認,容器對外部隱藏IP
如果容器默認對外部隱藏IP,那連接容器的方式就完全通過 docker宿主機IP+端口轉發(訪問宿主機上指定的端口,然后宿主機端口幫忙跳轉到容器端口)。
docker for windows桌面版是一種特殊的Windows安裝docker的方式。其中docker宿主機IP被設定和本地 Windows IP一樣。而WSL2直接安裝的方式中,兩者是不同IP,只不過在同一個WSL子網下。
實際ping容器的IP和端口號
這里陷入過誤區,一直在用容器端口+3306連接數據庫,一直認為是docker for windows有坑。或者是Windows防火牆策略。
異端口轉發測試(裝docker,跑這個測試):
查看被禁用的端口
netsh interface ipv4 show excludedportrange protocol=tcp
選擇9999作為測試端口號進行測試:
查看端口轉發:
docker中的MySQL安裝+配置+連接
配置運行容器
查看禁止的端口:
netsh interface ipv4 show excludedportrange protocol=tcp
選擇6666做為本地端口號
啟動MySQL容器,需要指定初始密碼+端口映射
這里密碼設置為了 root
docker run --name MYSQL -e MYSQL_ROOT_PASSWORD=root -p 6666:3306 -itd mysql:5.7 /bin/bash
連接到容器
登錄容器內的MySQL
配置MySQL-改字符集:
進入容器修改my.cnf文件
查找 my.cnf文件
mysql --help | grep my.cnf
修改/etc/mysql/my.cnf文件
坑點:沒有nano和vi
沒有vi和nano,如何改文件+換源?
使用手動echo添加源,再安裝nano
-
備份源
cp /etc/apt/sources.list /etc/apt/sources.list.bak
-
刪掉原本的sources.list
rm -rf /etc/apt/sources.list
-
手動echo添加源
echo 源 > sources.list
echo deb http://mirrors.aliyun.com/debian/ buster main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib deb http://mirrors.aliyun.com/debian-security buster/updates main deb-src http://mirrors.aliyun.com/debian-security buster/updates main deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib > sources.list
-
更新
apt update apt upgrade
-
安裝nano
apt install nano
開始修改
nano /etc/mysql/my.cnf
添加進去的字符集參數
[mysqld]
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
進入mysql中查詢字符集
show variables like '%character%';
重啟MySQL容器后再查詢字符集
配置MySQL -允許遠程登錄
選擇mysql庫
use mysql;
查看用戶表
SELECT `Host`,`User` FROM user;
如果不是%,則使用修改命令
UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1;
本地Windows連接MySQL容器
IP使用localhost,端口號填新建容器時選擇的本地轉發端口
連接成功
參考
https://blog.lupf.cn/articles/2020/11/08/1604845476002.html#toc_h5_16
https://blog.csdn.net/weixin_45859850/article/details/115387169
https://zhuanlan.zhihu.com/p/365632905
https://www.cnblogs.com/sablier/p/11605606.html
https://zhuanlan.zhihu.com/p/372062996