Docker從入門到部署-初識Docker
- 開發環境與部署環境不一致,本地正常的代碼放到線上就運行不了
- 比如項目需要使用Nginx做反向代理,而你平時不用,但還得去費時費力的去搭建這樣的環境
- 新項目打算使用最新語言版本支持新特性,但由於伺服器上運行著以前維護的老項目不敢輕易升級,你還是只能使用伺服器上的版本繼續開發
相信類似的情況大家都有遇到過,而且對此很絕望,我能怎麼辦啊。但是Docker容器化的技術正是解決上面問題的絕佳方案
以我最近開發遇到的問題來開始Docker入門之旅吧,公司給我一個新任務,讓我開發一個評論系統,所有的工作都讓我一個人完成,經過討論分析決定採用如下架構,後台採用node.js的express框架,資料庫採用MySQL,使用Redis做緩存,用Nginx做負載均衡,方案制定好後就是本地環境的搭建,發現其它環境平時有在用都有,唯獨沒有配置Nginx,考慮到部署到伺服器時我還是得再去配置一遍這些環境,身為懶癌晚期的程序員決定不想做這個重複且毫無意義的工作,這時我想到了Docker,兩年前曾經在Windows上沒配置成功,心裡想著現在應該完善了吧,於是打開了Docker官網,果然不出我所料,下面開始Docker的安裝及使用:
1.打開Docker官網,看到如下圖所示:
我們選擇Get Docker Community Edition下載社區版本,然後往下翻會看到各個平台的下載鏈接,由於我本人使用的是Mac OS 10.11.6的版本,所以選擇DOCKER CE FOR MAC,Windows用戶選擇DOCKER CE FOR WINDOWS,Linux用戶選擇自己平台的安裝教程即可,然後點擊Download from Docker Store打開後發現如下的選項,有Stable和Edge兩個版本可以選擇,我這裡選擇穩定的Stable版本下載:
下載之後安裝即可,這時候Docker就已經安裝好了,如何使用呢,看看官方給的文檔Docker for Mac documentation:- 檢查Docker Engine, Compose, and Machine的版本:
$ docker --versionnDocker version 17.03.0-ce, build 60ccb22nn$ docker-compose --versionndocker-compose version 1.11.2, build dfed245nn$ docker-machine --versionndocker-machine version 0.10.0, build 76ed2a6n
- 瀏覽應用程序並運行示例
- 打開一個命令行終端,運行一些Docker命令去驗證Docker是否正在運行,一些比較好的命令如docker verison去驗證是否已經安裝了最新的發行版,還有docker ps和docker run hello-world去驗證Docker是否正在運行。
- 啟動一個Web伺服器docker run -d -p 80:80 --name webserver nginx
如果本地沒有Nginx鏡像,就會從Docker Hub上面下載一個,這個過程可能會很慢,Docker的網路訪問在國內不是很順暢,建議此處選擇掛代理或者使用國內的鏡像源DaoCloud,我們新安裝的Docker本地肯定沒有Nginx,所以去DaoCloud上搜索Nginx,找到下載命令,我們安裝最新版本可以忽略版本號,直接在終端中輸入:
docker pull http://daocloud.io/library/nginx,安裝完之後運行一下docker images查看一下鏡像,如下圖所示:這時候我們來運行一下我們剛剛下載好的Nginx,docker run -d -p 80:80 --name webserver http://daocloud.io/library/nginx,然後打開瀏覽器輸入:http://localhost/ 應該就會看到下面的頁面,說明你的Nginx已經可以正常運行了,就是這麼簡單。
最後再來講一下鏡像和容器的關係,對比以前我們安裝虛擬機,鏡像就是我們需要安裝的系統鏡像,而容器就是相當於我們用系統鏡像安裝好的一個虛擬機實例,而這個系統和我們裝機時使用的GHO鏡像的概念差不多,直接安裝就結束了,不需要進行太多的配置,可以看出來其實Docker就是一個更輕量級的虛擬化技術,安裝部署方便,而且都保持著單一職責原則,比如一個Nginx就是一個鏡像,一個MySQL也是一個鏡像,其實對於個人來說如果想使用一個命令行終端的Linux系統不再需要去安裝虛擬機了,Docker更加適合你,而且也更方便,這篇初識Docker的文章就寫到這裡了,更多的內容期待這個系列今後的內容吧,不定期更新。
推薦閱讀:
※如何使用OpenDroneMap對航拍圖像快速建模
※基於Docker、Registrator、Zookeeper實現的服務自動註冊
※【技術總結】一起聊聊Kubernetes