背景
配置開發環境是目前我們開發團隊在進行開發工作之前的重要工作,對于需要使用我們自己封裝的開發框架的java web程序員來說更是如此,一般來說需要配置jdk、mysql、tomcat、maven等一系列基礎環境,如果需要使用我們現有的開發框架,還需要配置開發工程的模板、基礎服務的訪問地址、統一的環境參數等等。這些工作做起來比較繁瑣,即使按照開發文檔一步一步進行也容易出現差錯,而且較為耗費時間。
Docker容器技術的出現使得這一工作得以改進,通過一段時間的研究,我們的底層框架開發人員將以上環境全部使用Docker容器技術制作成為完整的鏡像,使得業務開發人員不必再關心這些瑣碎工作,只需通過git下載我們的工程模板,通過執行Docker命令自動在本地完成開發環境的構建。
然而由于docker是一個較新的技術,仍有很多開發人員沒有接觸過,上次我發的文章對于環境的配置描述的并不詳細,這次專門針對windows下的開發者如何配置docker環境做一次講解。如有必要,我將錄制專門的視頻來講解。
認識Docker
Docker是一種容器技術,可以在操作系統中隔離出若干個獨立的程序運行環境,這些環境既可以共享宿主機的資源,另一方面他們之間相互獨立,互不影響,也不會對宿主機的環境產生影響。與虛擬化技術不同的是,Docker比較輕量級,容器(隔離運行環境)的啟動和銷毀都比較快,這些運行環境可以像現實世界中的集裝箱那樣,打包成一個一個的鏡像,同樣的鏡像在不同的Docker環境中部署運行將會得到同樣的結果,就像同一首歌在不同的播放器播放那樣簡單。
Docker的出發點是將現在日趨復雜的web應用系統部署變得像播放唱片那樣簡單,但是它能做的卻遠不止于此,如果使用得當,我們將可以很容易實現“開發”、“測試”、“生產”環境的完全一致(這在以前是十分困難的),程序員以后也許再也說不出“這功能在我這兒好使”這樣的話了。
作為開發者,如果認真思考過以上的問題,當遇到Docker這種容器技術時,應該很容易就想到針對自己工作的改進方案,并且加以利用。比如如果想嘗試某一個新技術,以前可能需要在自己工作的操作系統上進行安裝,不但配置麻煩,而且存在將自己的系統弄壞的風險(很多人還愛重裝系統),現在不同了,只需要下載對應的鏡像文件,然后啟動容器,即可體驗。無論是golang、node、java、python這些程序語言,還是spark、wordpress、tomcat、mysql這種應用環境,都已經有人封裝好了即開即用的鏡像,隨時可以體驗,而且用著不爽可以隨時清理。
在Windows環境下的安裝
如果是在Linux系統下干活,則比較簡單,因為Linux已經實現對Docker技術的內核級支持,CentOS的軟件倉庫自帶了Docker最新版,可以直接通過命令安裝使用。
對于Windows來說,稍有些困難,但是目前也不是問題了。首先需要看一下你的Windows環境,分兩種情況,一種是Windows 10 64位專業版,一種是其他版本(比如很多人仍然推崇的Win 7)。前者可以直接支持安裝Docker原生版,性能最好,體驗最佳,后者只能使用Docker官方提供的一種過度技術(Docker ToolBox),這種技術不得不依賴Oracle的Virtualbox以在你的系統里創建一個虛擬機用以模擬Linux運行環境,好在封裝的比較好,基本可以忽略這個虛擬機的存在,只需專心使用Docker即可。
在Windows 10 64位專業版的安裝
這個最簡單,需要確定兩個基礎環境:
-
你的CPU支持虛擬化(一般都支持,如果在操作系統中沒看到,則可以手動到BIOS里打開,如果實在不支持,換臺新的電腦吧),具體可以通過任務管理器查看,如圖
cpu.png -
你的操作系統需要開啟Hyper-V,如圖
hyper-v.png
然后到官方網站下載安裝包直接安裝即可,有時候可能存在網站被墻的情況,也可以到我上傳的網盤里下載,鏈接在此 https://yunpan.cn/cMRZNp6BaXeEF 訪問密碼 80e6
非Windows 10 64位專業版(無法使用原生Docker)的安裝
這個稍微麻煩,也需要確定兩個基礎環境:
- 你的CPU支持虛擬化
- 你的操作系統需要關閉(注意是關閉!)Hyper-V
然后到官方網站下載安裝包,如果網站被墻,可以訪問這個地址,也可以到我上傳的網盤里下載,鏈接在此https://yunpan.cn/cMSaWneaYPE5K 訪問密碼 c8fa
安裝過程無特別之處,需要注意的是,如果你的系統內沒有安裝過Oracle Virtualbox,安裝程序會自動給你安裝一個,不用理會,直接一直點擊“下一步”即可。安裝完成后直接點擊快捷方式“Docker Quick Start”即可,如果是第一次運行,將會耗費一些時間(因為需要創建虛擬機),在這個過程中,系統可能會彈出若干次UAC提示讓你授權,果斷點擊“同意”即可。
環境的配置和使用
安裝完成之后,就可以隨意使用了,但是,受國內網絡環境的影響,還有一些需要調整,因為在國內訪問國外的鏡像庫(docker默認的那個)比較慢,一般鏡像又都比較大(動輒幾百兆),所以我們還需要配置一個國內的鏡像倉庫,推薦DaoCloud或者阿里云的,這里以阿里云舉例。
Windows10下的鏡像倉庫配置
原生的Docker配置比較簡單,官方還提供了可視化的配置界面,操作步驟如下:
- 右鍵點擊系統托盤的Dcoker圖標,選擇Settings
- 進入Docker Daemon選項,在右側窗口填入鏡像倉庫的地址(可以自行去阿里云申請,我這里有一個示例)
-
示例如圖
鏡像倉庫.png
配置完成后,在命令行窗口執行一個拉取鏡像的命令(docker pull tomcat
)試試看,會發現速度杠杠的。
DockerToolbox鏡像倉庫的配置
這個略微麻煩一些,不過還可以接受,需要在命令行進行操作:
- 先執行這個命令(鏡像地址可以自行替換)
docker-machine ssh default "echo 'EXTRA_ARGS=\"--registry-mirror=https://xks740zc.mirror.aliyuncs.com\"' | sudo tee -a /var/lib/boot2docker/profile"
- 再執行這個命令
docker-machine restart default
會重啟Docker虛擬機 - 然后執行命令
docker-machine ssh default
即可進入docker命令行環境了
關于DockerToolbox的特殊之處
- 在容器中暴露的應用端口,需要注意,他的訪問地址不是你的主機localhost,而是一個虛擬機的ip地址,一般為192.168.99.100,如果你在容器中跑起來一個web程序并且暴露了8080端口,那么想在外面訪問的話,地址為http://192.168.99.100:8080 ,如果是win10下的原生docker就會沒有這個迷惑,直接localhost了。
-
共享宿主機的文件給容器,需要注意,我們在使用容器時,一般會通過掛載卷的形式將系統的文件共享給容器使用,對于DockerToolbox來說,它默認給你設置了系統盤的User文件夾具有可以掛載共享文件的能力,也就是說,你需要使用掛載卷的時候,必須確保文件在這個根目錄之下(比如放在C:/Users/xxx/Dcouments/xxxx)。
如果是window10系統的原生docker技術則可通過圖形設置界面完成,如圖
share.png