在Linux的Windows子系統上(WSL)使用Docker(Ubuntu)


背景

  平時開發大部人都是在提供了高效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

安裝WSL

配置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無疑為我們簡化了這一過程,告別了使用虛擬機的開銷,相信會讓開發者更高效的工作

 

 

 

 
       


免責聲明!

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



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