背景
平時開發大部人都是在提供了高效GUI的window下工作,但是真正部署環境普遍都是在Linux中,所以為了讓開發環境和部署環境統一,我們需要在windows模擬LInux環境,以前我們可能通過虛擬機的方式實現,不過自從微軟擁抱開源更加開發提供了Linux的Windows子系統(WSL)后,我們又多了一個選擇,通過WSL運行linux程序(WSL比通過虛擬機來運行linux性能更強,耗費資源更小,安裝linux環境最大只需要200多M)!經過幾次調整WSL(用於Linux的Windows子系統,也被稱為Bash for Windows)可以用於Docker for Windows。
不過令人遺憾的是目前WSL是不支持Docker的守護進程,但您可以使用Docker CLI連接到通過Docker for Windows或您創建的任何其他VM 運行的遠程Docker守護進程
概覽
docker的架構設計分為三個組件:一個客戶端,一個REST API和一個服務器(守護進程):
- Client :與REST API交互。主要目的是允許用戶連接守護進程。
- REST API:充當客戶端和服務器之間的接口,實現通信。
- 守護進程:負責實際管理容器 - 啟動,停止等。守護進程監聽來自docker客戶端的API請求。
守護進程與內核關系非常密切。今天在Windows中,當您運行Windows Server容器時,守護進程在Windows中運行。當您切換到Linux容器模式時,守護程序實際上在名為Moby Linux VM的虛擬機內運行。隨着Docker 即將發布,您將能夠並行運行Windows Server容器和Linux容器,守護進程將始終作為Windows進程運行。
然而,客戶端不必與守護進程安裝在同一個地方。例如,您可以在開發計算機上使用本地Docker客戶端與Azure中的Docker進行通信。這使我們可以讓WSL中的客戶端與主機上運行的守護進程通信。
前提:
打開Hyper-V,並打開cpu虛擬化功能
安裝Docker for Windows
配置Docker for Windows
在常規設置中,您需要公開沒有TLS的守護進程。此步驟是必需的,以便守護程序在TCP端點上進行偵聽。如果你不這樣做,那么你將無法從WSL連接。
所以為了讓客戶端和docker通信,必須打開以下黃色背景的選項!

您可能還想共享您的驅動器(土話:盤符)。這一步不是必須的,但如果需要用到某個盤符的文件,建議勾選對應選項,轉到“共享驅動器(Shared Drives)”設置並啟用它。
配置WSL
我們需要在WSL上安裝Docker客戶端
執行命令:apt installdocker.io
將WSL配置為連接到Docker for Windows
執行命令:export DOCKER_HOST=tcp://127.0.0.1:2375
現在執行docker命令不會再出現以下提示:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

但是,該環境變量只會持續到會話結束。每次打開bash時都必須重新設置它。因此,為了避免這種情況,您需要在主目錄中的一個名為.bash_profile或者 .bashrc的文件中設置該變量,
這兩個文件只支持ssh命令終端用vi打開

在FileZilla文件訪問軟件是無法找到的
打開這兩個文件中有數據的那個並在結尾處添加

保存后重新啟動bash控制台執行docker相關命令可以照常執行了

由於windows10的推出生產力又進一步釋放,絕大部分開發人員還是繼續會在windows上進行日常開發,但是linux又是普遍公認的服務器部署首選系統,開發人員有必要了解linux的日常使用,並在linux環境下進行測試程序的可靠性,wsl無疑為我們簡化了這一過程,告別了使用虛擬機的開銷,相信會讓開發者更高效的工作
