在Linux的Windows子系统上(WSL)使用Docker(Ubuntu)
背景
平時開發(fā)大部人都是在提供了高效GUI的window下工作,但是真正部署環(huán)境普遍都是在Linux中,所以為了讓開發(fā)環(huán)境和部署環(huán)境統(tǒng)一,我們需要在windows模擬LInux環(huán)境,以前我們可能通過虛擬機的方式實現(xiàn),不過自從微軟擁抱開源更加開發(fā)提供了Linux的Windows子系統(tǒng)(WSL)后,我們又多了一個選擇,通過WSL運行l(wèi)inux程序(WSL比通過虛擬機來運行l(wèi)inux性能更強,耗費資源更小,安裝linux環(huán)境最大只需要200多M)!經(jīng)過幾次調(diào)整WSL(用于Linux的Windows子系統(tǒng),也被稱為Bash for Windows)可以用于Docker for Windows。
不過令人遺憾的是目前WSL是不支持Docker的守護進程,但您可以使用Docker CLI連接到通過Docker for Windows或您創(chuàng)建的任何其他VM?運行的遠程Docker守護進程
概覽
docker的架構(gòu)設計分為三個組件:一個客戶端,一個REST API和一個服務器(守護進程):
Client :與REST API交互。主要目的是允許用戶連接守護進程。
REST API:充當客戶端和服務器之間的接口,實現(xiàn)通信。
守護進程:負責實際管理容器 - 啟動,停止等。守護進程監(jiān)聽來自docker客戶端的API請求。
守護進程與內(nèi)核關系非常密切。今天在Windows中,當您運行Windows Server容器時,守護進程在Windows中運行。當您切換到Linux容器模式時,守護程序?qū)嶋H上在名為Moby Linux VM的虛擬機內(nèi)運行。隨著Docker 即將發(fā)布,您將能夠并行運行Windows Server容器和Linux容器,守護進程將始終作為Windows進程運行。
然而,客戶端不必與守護進程安裝在同一個地方。例如,您可以在開發(fā)計算機上使用本地Docker客戶端與Azure中的Docker進行通信。這使我們可以讓WSL中的客戶端與主機上運行的守護進程通信。
前提:
打開Hyper-V,并打開cpu虛擬化功能
安裝Docker for Windows
安裝WSL
配置Docker for Windows
在常規(guī)設置中,您需要公開沒有TLS的守護進程。此步驟是必需的,以便守護程序在TCP端點上進行偵聽。如果你不這樣做,那么你將無法從WSL連接。
所以為了讓客戶端和docker通信,必須打開以下黃色背景的選項!
您可能還想共享您的驅(qū)動器(土話:盤符)。這一步不是必須的,但如果需要用到某個盤符的文件,建議勾選對應選項,轉(zhuǎn)到“共享驅(qū)動器(Shared Drives)”設置并啟用它。
?配置WSL
我們需要在WSL上安裝Docker客戶端
執(zhí)行命令:apt installdocker.io
?將WSL配置為連接到Docker for Windows
執(zhí)行命令:export DOCKER_HOST=tcp://127.0.0.1:2375
這步驟很重要,例如利用gitlab的runner時,在gitlab-ci.yml中也需要有次命令,runner的鏡像才可連接宿主機Docker進行構(gòu)建作業(yè)!
?現(xiàn)在執(zhí)行docker命令不會再出現(xiàn)以下提示:
但是,該環(huán)境變量只會持續(xù)到會話結(jié)束。每次打開bash時都必須重新設置它。因此,為了避免這種情況,您需要在主目錄中的一個名為.bash_profile或者 .bashrc的文件中設置該變量,
這兩個文件只支持ssh命令終端用vi打開
?
在FileZilla文件訪問軟件是無法找到的
打開這兩個文件中有數(shù)據(jù)的那個并在結(jié)尾處添加
?保存后重新啟動bash控制臺執(zhí)行docker相關命令可以照常執(zhí)行了
?
由于windows10的推出生產(chǎn)力又進一步釋放,絕大部分開發(fā)人員還是繼續(xù)會在windows上進行日常開發(fā),但是linux又是普遍公認的服務器部署首選系統(tǒng),開發(fā)人員有必要了解linux的日常使用,并在linux環(huán)境下進行測試程序的可靠性,wsl無疑為我們簡化了這一過程,告別了使用虛擬機的開銷,相信會讓開發(fā)者更高效的工作
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的在Linux的Windows子系统上(WSL)使用Docker(Ubuntu)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 架构杂谈《五》
- 下一篇: 【译】在 Linux 上不安装 Mono