Docker-Docker Desktop 安裝教程,以及推薦Docker作為學習工具的理由
@
文章字數(shù):約2300
閱讀大約需要時間:10min
本文自建博客地址
一、前言
2年前我寫了一篇 關(guān)于如何在本地安裝Docker 的教程),但是當時安裝 Docker Desktop 還需要開啟 hyper-v 或者是安裝 toolbox 才能開啟虛擬化。這兩種情況下配置各有不同,而且也都需要配置環(huán)境變量,安裝過程還是比較麻煩的。
但是現(xiàn)在有了 wsl2,在 windows 上使用 Docker 開發(fā) 更加方便了。本質(zhì)上,wsl2 還是依賴hyper-v 技術(shù),啟動速度不慢,也不需要單獨安裝其他虛擬機,配置起來也更加方便。
不過wsl2 的方便性可以說是錦上添花,docker 最大的好處,我認為還是在相比虛擬機來說,它擁有和git 類似的倉庫管理、版本等屬性,有了這些基礎(chǔ),才有了作為開發(fā)工具的高效性。這才是我真正推薦它的原因。
這篇博客主要就是幫大家避坑,把docker desktop 安裝之后需要預(yù)設(shè)的配置盡量說明清楚,讓大家可以安心地 在win10 系統(tǒng)上安裝 Docker Desktop,以及提供一個基礎(chǔ)開發(fā)鏡像,幫助大家以后學習新技術(shù)能夠更加方便。
二、安裝 docker desktop
2.1 環(huán)境準備
2.1.1 配置wsl
前提:本機已經(jīng)安裝了 wsl (參考官方教程,使用docker 到第五步 Set WSL 2 as your default version完成就可以了。最新版本的win10 應(yīng)該是自帶的)
檢查wsl 是否有安裝:
到windows 功能中查找選項:適用于linux 的 windows 子系統(tǒng)
然后是限制 wsl 使用的資源:默認情況下,一旦你開啟的鏡像需要比較多資源,系統(tǒng)資源就會被直接吃滿。
所以一定要記得設(shè)置wsl 占用資源配置,配置方式如下:
Win+R 然后輸入 %UserProfile% 進入用戶文件夾
然后編輯 .wslconfig 輸入以下內(nèi)容:(具體數(shù)值根據(jù)實際情況調(diào)整)
[wsl2]
memory=4GB
swap=5GB
processors=5
localhostForwarding=true
memory: 內(nèi)存
swap: 虛擬內(nèi)存
processors: 處理器數(shù)量,當前電腦的processor 數(shù)量可以通過 wmic 指令獲取
LocalhostForwarding: 允許本地通過 localhost 訪問 wsl,默認就是開啟
更多參數(shù)的說明
然后重啟 lxss manager (即wsl服務(wù))
net stop LxssManager
net start LxssManager
最后是設(shè)置wsl 的數(shù)據(jù)存儲路徑,這個在安裝 Docker Desktop 完成之后可以添加上去,參考下面的說明。
2.1.2 注冊一個 dockerhub 賬號 和 國內(nèi)云廠商 容器服務(wù)
賬號本身 不影響 Docker Desktop 啟動 ,但是還是建議體驗一下容器鏡像服務(wù)。容器鏡像管理的方式類似git 代碼,可以把自己后續(xù)學習其他技術(shù)的過程中 ,搭建好的鏡像提交到云端,做備份用。也方便共享。
下面幾個鏡像服務(wù)提供商,個人版本都是免費的。不過主推還是國內(nèi)的鏡像服務(wù),傳輸速度快一點。
阿里云鏡像服務(wù)(前言中引的博客中有說明注冊方式)
騰訊云鏡像服務(wù)
dockerhub(建議開啟代理訪問)
2.2 安裝 Desktop
首先從官網(wǎng)下載 最新版本,直接安裝即可
安裝完成之后,可以先測試是否能正常啟動,其他配置可以慢慢來改,kubernetes 也不急著安裝。
2.3 Docker Desktop 的配置
2.3.1 wsl 數(shù)據(jù)存儲路徑
第一次成功啟動 docker desktop 之后,你可以在 C:\Users\用戶名\AppData\Local\Docker\wsl\data 這個目錄下,找到ext4 文件,它就是 wsl 使用的虛擬機文件,我們使用docker 的所有操作和下載的所有文件,都會在這個目錄中執(zhí)行。
因此如果默認系統(tǒng)分了系統(tǒng)盤和數(shù)據(jù)盤,或者是我們有其他空間更大的硬盤可選,那么有必要將 這個ext4盤文件 進行遷移。

更新:20221008 發(fā)現(xiàn)一個工具可以幫我們快速遷移,比之前使用 wsl 指令,還需要先導(dǎo)出,再導(dǎo)入的操作稍微簡單一些
遷移方式:先確認需要遷移的 wsl 名稱:
./LxRunOffline.exe list

然后遷移:(遷移需要一定時間)
./LxRunOffline.exe move -n docker-desktop-data -d 'D:\wsl'
== 以下是舊的遷移方式 ==
遷移步驟:首先退出 docker desktop ,并檢查docker desktop 對應(yīng)的虛擬機的狀態(tài),應(yīng)該都要是關(guān)閉狀態(tài)
wsl --list -v

wsl --export docker-desktop-data "C:\Users\用戶名\AppData\Local\Docker\wsl\data\docker-desktop-data.tar"
將目前的wsl 磁盤文件導(dǎo)出到指定壓縮文件中
wsl --unregister docker-desktop-data
卸載docker-desktop-data服務(wù)
wsl --import docker-desktop-data "D:\docker\wsl\data" "D:\docker\wsl\docker-desktop-data.tar" --version 2
導(dǎo)入剛才導(dǎo)出的 wsl 磁盤文件
最后,重啟 docker desktop,正常來說:
① docker 可以正常啟動
② 原目錄的 ext4 文件沒有了(Distro 下面也有一個 ext4 文件,這個沒關(guān)系)
2.3.2 配置代理
代理基本是開發(fā)過程中必備的,但是如果你使用的鏡像服務(wù)是國內(nèi)的,那么提交、下載鏡像的時候又不應(yīng)該走代理,所以需要在代理上額外配置一下:

如:使用阿里云鏡像的代理配置
localhost,127.0.0.1,*.aliyuncs.com
2.3.3 測試拉取并運行鏡像
這里我們測試一個可直接通過 ssh 連接的鏡像:jdeathe/centos-ssh
Git地址
docker pull jdeathe/centos-ssh
docker run -d --env "SSH_PASSWORD_AUTHENTICATION=true" --env "SSH_USER=centos" --env "SSH_USER_PASSWORD=test123" --name ssh.1 -p 30022:22 jdeathe/centos-ssh
除了啟動命令的學習,這個倉庫提供的Dockefile 非常標準化,是直接基于centos 原生鏡像 在其基礎(chǔ)上改的,從Dockerfile中也能看到非常多標準化的操作,想要學習 centos 原生鏡像初始化細節(jié)的可以從這個項目的Dockerfile中了解更多細節(jié)。
三、搭建自己的開發(fā)服務(wù)器
這里提供一個自己平時開發(fā)用的鏡像,里面安裝了一些開發(fā)語言的基本環(huán)境
其中,語言下載的依賴(比如 maven、gopath)都統(tǒng)一放在 /opt/path 目錄下,安裝的組件都放在 /opt/modules 下。
項目git地址(smiecj/docker-centos)
鏡像下載和啟動方式:
# 構(gòu)建一個包含 golang、python、java 和 npm 的開發(fā)鏡像
REPO=mzsmieli nohup make build_dev_full
# 運行鏡像 (也可以直接運行 將從 docker hub 下載鏡像)
docker run -it -d -p 2222:22 mzsmieli/centos:base8_dev_full_1.0
啟動成功后,就可以進行自由的開發(fā)了。如果需要在容器內(nèi)部編寫代碼,這里再推薦 vscode + ssh + 本地免密登錄配置的開發(fā)模式。修改之后,在容器內(nèi)部代碼變更可以立刻生效,也可以在 vscode 中直接通過 命令行 執(zhí)行操作

如果需要啟動其他服務(wù),開啟更多端口映射,修改 Dockerfile 和 docker run 啟動命令即可。
四、后言:Docker 在現(xiàn)在開發(fā)的重要性
現(xiàn)在不僅是信息爆炸的時代,更是技術(shù)爆炸的時代。底層技術(shù)雖然沒有太大的變化,但是上層應(yīng)用技術(shù)基本是2-3年一更新。
伴隨而來的,不僅僅是我們自己知識庫的更新,還有日益膨脹的操作系統(tǒng)。是的,有的時候我們需要在電腦上跑后臺前端服務(wù),有的時候也要學習其他基礎(chǔ)組件,可能還要順應(yīng)潮流學一點機器學習。各種技術(shù)都需要安裝一些依賴。不管是 mac 還是 windows,一旦你換一臺電腦,遷移這些環(huán)境都是很費成本的。
因此 現(xiàn)在項目都推崇 協(xié)同開發(fā)的模式,所有代碼、文檔 都在云端統(tǒng)一管理。但是對個人來說,這種模式也慢慢變得必要起來。
所以我推薦 Docker 的原因就這么簡單,只是鏡像管理和環(huán)境管理的方便性,對于程序員來說就足夠愛上它了。而且它也遠不止這些內(nèi)容,它的原理,以及 k8s 的實現(xiàn),也是值得我們?nèi)W習的。共勉。

浙公網(wǎng)安備 33010602011771號