Docker for win10 桌面版的安裝及配置(偏向脫坑)


Docker for win10 桌面版的安裝及配置(偏向脫坑)

安裝

按照它的指引教程,無腦下一步即可

下載地址:

https://docs.docker.com/desktop/windows/install/

安裝完成后,它會有新手引導,按照上面的命令運行即可,大概4步做完后,docker就已經安裝完成。

此時可以通過查看版本號,查看docker的相關信息

docker -v

image-20211002124650593

后續就可以在power shell中使用docker的命令來操作docker

例如:image-20211002125351759

配置

換源

使用國內源替代掉docker的默認源

    "https://hub-mirror.c.163.com",
    "https://ustc-edu-cn.mirror.aliyuncs.com",
    "https://ghcr.io",
    "https://mirror.baidubce.com"

image-20211002125135969

測試

拉取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就啟動完了,測試效果如下

image-20211002130028097

停止+刪除nginx

image-20211002130107383

stop代表停止,右邊的垃圾桶圖標則是刪除

命令行刪除:

image-20211002130230409

docker網絡連接(真正的坑點)

出現連接容器的bug,大部分都是因為這個坑

Docker for win10的docker實際運行在新建的WSL2宿主機。那此時如何與Windows通信?

image-20211002130606915

此時存在3個IP:

  • docker容器的IP
  • Linux宿主機IP
  • 本地Windows IP

訪問哪個IP才能訪問到容器內部的應用?

使用常用的測試容器Nginx

測試結果:

image-20211002130856112

可以看到使用localhost,即可訪問。這是WSL2的優化

同時,大量鏡像甚至沒有安裝net-tools,無法直接查看IP。即默認,容器對外部隱藏IP

如果容器默認對外部隱藏IP,那連接容器的方式就完全通過 docker宿主機IP+端口轉發(訪問宿主機上指定的端口,然后宿主機端口幫忙跳轉到容器端口)。

docker for windows桌面版是一種特殊的Windows安裝docker的方式。其中docker宿主機IP被設定和本地 Windows IP一樣。而WSL2直接安裝的方式中,兩者是不同IP,只不過在同一個WSL子網下。

實際ping容器的IP和端口號

image-20211002131123357

這里陷入過誤區,一直在用容器端口+3306連接數據庫,一直認為是docker for windows有坑。或者是Windows防火牆策略。

異端口轉發測試(裝docker,跑這個測試):

查看被禁用的端口

netsh interface ipv4 show excludedportrange protocol=tcp

image-20211002131323180

選擇9999作為測試端口號進行測試:

image-20211002180230031

image-20211002131351510

image-20211002131405588

查看端口轉發:

image-20211002131427672

docker中的MySQL安裝+配置+連接

配置運行容器

查看禁止的端口:

netsh interface ipv4 show excludedportrange protocol=tcp

image-20211002180509289

選擇6666做為本地端口號

啟動MySQL容器,需要指定初始密碼+端口映射

這里密碼設置為了 root

docker run --name MYSQL -e MYSQL_ROOT_PASSWORD=root -p 6666:3306 -itd mysql:5.7 /bin/bash

連接到容器

image-20211002180904695

image-20211002180921594

登錄容器內的MySQL

image-20211002180943998

配置MySQL-改字符集:

進入容器修改my.cnf文件

查找 my.cnf文件

mysql --help | grep my.cnf

image-20211002181307134

修改/etc/mysql/my.cnf文件

坑點:沒有nano和vi

image-20211002181400955

沒有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%';

image-20211002181959487

重啟MySQL容器后再查詢字符集

image-20211002182024730

配置MySQL -允許遠程登錄

選擇mysql庫

use mysql;

查看用戶表

SELECT `Host`,`User` FROM user;

image-20211002182249295

如果不是%,則使用修改命令

UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1;

本地Windows連接MySQL容器

IP使用localhost,端口號填新建容器時選擇的本地轉發端口

image-20211002182418573

連接成功

image-20211002182632947

參考

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

https://zhuanlan.zhihu.com/p/266534015

https://zhuanlan.zhihu.com/p/143857664


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM