在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。html

  不過使人遺憾的是目前WSL是不支持Docker的守護進程但您可使用Docker CLI鏈接到經過Docker for Windows或您建立的任何其餘VM 運行的遠程Docker守護進程linux

概覽

 docker的架構設計分爲三個組件:一個客戶端,一個REST API和一個服務器(守護進程)docker

  • Client :與REST API交互。主要目的是容許用戶鏈接守護進程。
  • REST API:充當客戶端和服務器之間的接口,實現通訊。
  • 守護進程:負責實際管理容器 - 啓動,中止等。守護進程監聽來自docker客戶端的API請求。

守護進程與內核關係很是密切。今天在Windows中,當您運行Windows Server容器時,守護進程在Windows中運行。當您切換到Linux容器模式時,守護程序實際上在名爲Moby Linux VM的虛擬機內運行隨着Docker 即將發佈,您將可以並行運行Windows Server容器和Linux容器,守護進程將始終做爲Windows進程運行。windows

然而,客戶端沒必要與守護進程安裝在同一個地方。例如,您能夠在開發計算機上使用本地Docker客戶端與Azure中的Docker進行通訊。這使咱們可讓WSL中的客戶端與主機上運行的守護進程通訊。bash

前提:

打開Hyper-V,並打開cpu虛擬化功能服務器

安裝Docker for Windows架構

安裝WSLssh

配置Docker for Windows

在常規設置中,您須要公開沒有TLS的守護進程。此步驟是必需的,以便守護程序在TCP端點上進行偵聽。若是你不這樣作,那麼你將沒法從WSL鏈接。tcp

因此爲了讓客戶端和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無疑爲咱們簡化了這一過程,告別了使用虛擬機的開銷,相信會讓開發者更高效的工做

相關文章
相關標籤/搜索