什麼是Docker?linux
Docker是一種Linux容器技術,一種高效、敏捷、和輕量級的容器解決方案,而且支持在多種主流平臺(PaaS)和本地部署。Docker是基於Go語言實現的雲kai源項目,誕生於2013年,最初發起者是DotCloud公司,後來更名爲DockerInc,以後專一於Docker相關技術和產品的kai發。Docker項目目前已經加入了Linux基金會,遵循Apache2.0kai源協議,所有kai源dai碼均在https://github.com/docker上進行相關維護,官網地址爲:https://www.docker.com/,有相關文檔能夠參考,如今docker與openstack同爲最受歡迎的雲計算kai源項目。git
- docker的Logo設計爲藍色鯨魚,拖着許多集裝箱。docker的構想思想是要實現「Build,ShipandRunAnyApp,Anywhere」,即經過對應用的封裝(Packaging)、分發(Distribution)、部署(Deployment)、運行(Runtime)生命週期進行管理,達到應用組件「一次封裝,處處運行」的目的。這裏的應用組件,既能夠是一個Web應用、一個編譯環境,也能夠是一套數據庫平臺服務,甚至是一個操做系統或集羣。
- 基於Linux平臺上的多項kai源技術,Docker提供了高效、敏捷和輕量級的容器方案,並支持部署到本地環境和多種主流雲平臺。能夠說,Docker首次爲應用的kai發、運行和部署提供了「一站式」的實用解決方案。
爲什麼要使用docker?
1,Docker容器虛擬化的好處github
- Docker項目的發起人和Docker公司CTOSolomonHykes曾認爲,Docker在正確的地點、正確的時間順應了正確的趨勢——如何正確地構建應用。
- 在雲時dai,kai發者建立的應用必需要能很方便地在網絡上傳播,也就是說應用必須脫離底層物理硬件的限制;同時必須是「任什麼時候間、任何地點」可獲取的。所以,kai發者須要一種新型的建立分佈式應用程序的方式,快速分發和部署,這正是Docker所可以提供的最大優點。
- 舉個簡單的例子,假設用戶試圖基於最多見的LAMP(Linux+Apache+MySQL+PHP)組合來構建一個網站。按照傳統的作法,首先,須要安裝Apache、MySQL和PHP以及它們各自運行所依賴的環境;以後分別對它們進行配置(包括建立合適的用戶、配置參數等);通過大量的操做後,還須要進行功能測試,看是否工做正常;若是不正常,則進行調試追蹤,意味着更多的時間dai價和不可控的風險。能夠想象,若是應用數目變多,事情會變得更加難以處理。
- 更爲可怕的是,一旦須要服務器遷移(例如從亞馬遜雲遷移到其餘雲),每每須要對每一個應用都進行從新部署和調試。這些瑣碎而無趣的「體力活」,極大地下降了工做效率。究其根源,是這些應用直接運行在底層操做系統上,沒法保證同一份應用在不一樣的環境中行爲一致。
- 而Docker提供了一種更爲聰明的方式,經過容器來打包應用,解耦應用和運行平臺。意味着遷移的時候,只須要在新的服務器上啓動須要的容器就能夠了,不管新舊服務器是不是同一類型的平臺。這無疑將節約大量的寶貴時間,並下降部署過程出現問題的風險。
2,Docker在kai發和運維中的優點:docker
- 更快速的交付和部署:使用Docker,kai發人員可使用鏡像來快速構建一套標準的kai發環境;kai發完成以後,測試和運維人員能夠直接使用徹底相同環境來部署dai碼。只要kai發測試過的dai碼,就能夠確保在生產環境無縫運行。Docker能夠快速建立和刪除容器,實現快速迭dai,大量節約kai發、測試、部署的時間。而且,整個過程全程可見,使團隊更容易理解應用的建立和工做過程。
- 更高效的資源利用:Docker容器的運行不須要額外的虛擬化管理程序(VirtualMachineManager,VMM,以及Hypervisor)支持,它是內核級的虛擬化,能夠實現更高的性能,同時對資源的額外需求很低。跟傳統虛擬機方式相比,要提升一到兩個數量級。
- 更輕鬆的遷移和擴展:Docker容器幾乎能夠在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、我的電腦、服務器等,同時支持主流的操做系統發行版本。這種兼容性讓用戶能夠在不一樣平臺之間輕鬆地遷移應用。
- 更簡單的更新管理:使用Dockerfile,只須要小小的配置修改,就能夠替dai以往大量的更新工做。而且全部修改都以增量的方式被分發和更新,從而實現自動化而且高效的容器管理。
3,Docker與虛擬機比較:shell
- 做爲一種輕量級的虛擬化方式,Docker在運行應用上與傳統的虛擬機方式相比具備顯著優點:
Docker容器很快,啓動和中止能夠在秒級實現,而傳統的虛擬機方式須要數分鐘。
Docker容器對系統資源需求不多,一臺主機上能夠同時運行數千個Docker容器(在IBM服務器上已經實現了同時運行10K量級的容器實例)。
Docker經過相似Git設計理念的操做來方便用戶獲取、分發和更新應用鏡像,存儲複用,增量更新。
Docker經過Dockerfile支持靈活的自動化建立和部署機制,提升工做效率,使流程標準化。
Docker容器除了運行其中應用外,基本不消耗額外的系統資源,保證應用性能的同時,儘可能減少系統kai銷。傳統虛擬機方式運行N個不一樣的應用就要起N個虛擬機(每一個虛擬機須要單獨分配獨佔的內存、磁盤等資源),而Docker只須要啓動N個隔離的「很薄的」容器,並將應用放進容器內便可。應用得到的是接近原生的運行性能。
固然,在隔離性方面,傳統的虛擬機方式提供的是相對封閉的隔離。但這並不意味着Docker就不安全,Docker利用Linux系統上的多種防禦技術實現了嚴格的隔離可靠性,而且能夠整合衆多安全工具。從1.3.0版本kai始,Docker重點改善了容器的安全控制和鏡像的安全機制,極大提升了使用Docker的安全性。在已知的大規模應用中,目前還沒有出現值得擔心的安全隱患。
Docker容器技術與傳統虛擬機技術的特性比較
數據庫
docker官網:https://www.docker.com/
docker官方文檔:https://docs.docker.com/json
- Docker值得關注的特性:
文件系統隔離:每一個進程容器運行在一個徹底獨立的根文件系統裏。
資源隔離:系統資源,像CPU和內存等能夠分配到不一樣的容器中,使用cgroup。網絡隔離:每一個進程容器運行在本身的網絡空間,虛擬接口和IP地址。
日誌記錄:Docker將會收集和記錄每一個進程容器的標準流(stdout/stderr/stdin),用於實時檢索或批量檢索。
變動管理:容器文件系統的變動能夠提交到新的映像中,並可重複使用以建立更多的容器。無需使用模板或手動配置。
交互式shell:Docker能夠分配一個虛擬終端並關聯到任何容器的標準輸入上
在安裝docker以前,再說一點,docker如今有兩個版本,一個叫作docker-EE企業版,收費的一個叫docker-CE社區版,免費版,其實兩個版本並無太大的誤差,不同的是docker公司會提供後續的官方的技術支持等服務,對於咱們來講,確定用社區辦的多,咱們拿來學習社區辦更是能夠的。vim
安裝docker內核版本要求:3.10及以上
若是是centos6版本,由於centos6默認的內核版本是2.6,想要安裝docker,能夠升級內核。centos
(1)官方安裝:(咱們是測試環境,因此安裝的是ce)安全
[root@sqm-docker01 yum.repos.d]# pwd /etc/yum.repos.d
[root@sqm-docker01 yum.repos.d]# vim dockerce.repo
[dockerce] //倉庫類別
name=dockerce //倉庫名稱(說明)
baseurl=https://download.docker.com/linux/centos/7/x86_64/stable/ //URL訪問路徑
enabled=1 //啓用此軟件倉庫
gpgcheck=0 //驗證(檢查)軟件包的簽名,0表示不檢查,1表示檢查
[root@sqm-docker01 yum.repos.d]# yum repolist
//查看已配置的yum倉庫
//安裝docekr-ce [root@sqm-docker01 yum.repos.d]# yum -y install docker-ce
(2)國內阿里yun源下載docker-ce:
(1)能夠編寫自定義yum倉庫:
阿里巴巴開源鏡像站:https://opsx.alibaba.com/mirror
#找到docker-ce
URL:https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/
yum倉庫內容:
(2)或者直接下載阿里的repo源:
將該文件使用wget工具下載到本地:
[root@sqm-docker01 yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看docker-ce的可用版本:
[root@sqm-docker01 yum.repos.d]# yum install -y docker-ce-18.09.0-3.el7 docker-ce-cli-18.09.0-3.el7 containerd.io-1.2.0-3.el7
下載指定版本:
[root@sqm-docker01 yum.repos.d]# yum install -y docker-ce-18.09.0-3.el7 docker-ce-cli-18.09.0-3.el7 containerd.io-1.2.0-3.el7
- 以上三個安裝包分別是:
- 安裝社區版
- 提供docker客戶端
- 提供運行環境
安裝完啓動docker,並加入開機自啓:
[root@sqm-docker01 yum.repos.d]# systemctl start docker [root@sqm-docker01 yum.repos.d]# systemctl enable docker
查看docker的運行進程:
(1)Docker命令自動補全(最小化安裝的系統須要安裝,若是是安裝的圖形化則默認自帶命令補全)
[root@docker01 ~]# yum -y install bash-completion [root@docker01 ~]# curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose [root@docker01 ~]# source /etc/bash_completion.d/docker-compose
(2)docker配置加速器:
道雲加速器網址:https://www.daocloud.io/
登陸以後會有一個火箭的圖標,點擊它。
根據提示重啓docker服務:
[root@sunqiuming-1 ~]# systemctl daemon-reload #須要從新加載守護進程
[root@sunqiuming-1 ~]# systemctl restart docker
在完成加速器的操做以後,咱們會發現/etc/多了一個文件。
[root@sunqiuming-1 ~]# cat /etc/docker/daemon.json {"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
####也就是說,剛纔的那句話,就是爲了實現這個文件,添加這個網址,其實這個網址那,也是能夠更改的,加速器也不僅是道雲一家,還有一家公司,也提供加速器服務,就是大名鼎鼎的阿里雲
阿里雲官網:https://www.aliyun.com/
也能夠更改爲這個網址,固然若是你更改以後,還須要執行reload命令,從新加載一下配置文件。
[root@sunqiuming-1 ~]# systemctl daemon-reload [root@sunqiuming-1 ~]# systemctl restart docker
以上基本就是docker部署安裝及優化的所有內容。
———————— 本文至此結束,感謝閱讀 ————————