什么是Docker?
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源項目。
- docker的Logo設計為藍色鯨魚,拖著許多集裝箱。docker的構想思想是要實現“Build,ShipandRunAnyApp,Anywhere”,即通過對應用的封裝(Packaging)、分發(Distribution)、部署(Deployment)、運行(Runtime)生命周期進行管理,達到應用組件“一次封裝,到處運行”的目的。這里的應用組件,既可以是一個Web應用、一個編譯環境,也可以是一套數據庫平臺服務,甚至是一個操作系統或集群。
- 基于Linux平臺上的多項kai源技術,Docker提供了高效、敏捷和輕量級的容器方案,并支持部署到本地環境和多種主流云平臺??梢哉f,Docker首次為應用的kai發、運行和部署提供了“一站式”的實用解決方案。
為何要使用docker?
1,Docker容器虛擬化的好處
- Docker項目的發起人和Docker公司CTOSolomonHykes曾認為,Docker在正確的地點、正確的時間順應了正確的趨勢——如何正確地構建應用。
- 在云時dai,kai發者創建的應用必須要能很方便地在網絡上傳播,也就是說應用必須脫離底層物理硬件的限制;同時必須是“任何時間、任何地點”可獲取的。因此,kai發者需要一種新型的創建分布式應用程序的方式,快速分發和部署,這正是Docker所能夠提供的最大優勢。
- 舉個簡單的例子,假設用戶試圖基于最常見的LAMP(Linux+Apache+MySQL+PHP)組合來構建一個網站。按照傳統的做法,首先,需要安裝Apache、MySQL和PHP以及它們各自運行所依賴的環境;之后分別對它們進行配置(包括創建合適的用戶、配置參數等);經過大量的操作后,還需要進行功能測試,看是否工作正常;如果不正常,則進行調試追蹤,意味著更多的時間dai價和不可控的風險??梢韵胂?,如果應用數目變多,事情會變得更加難以處理。
- 更為可怕的是,一旦需要服務器遷移(例如從亞馬遜云遷移到其他云),往往需要對每個應用都進行重新部署和調試。這些瑣碎而無趣的“體力活”,極大地降低了工作效率。究其根源,是這些應用直接運行在底層操作系統上,無法保證同一份應用在不同的環境中行為一致。
- 而Docker提供了一種更為聰明的方式,通過容器來打包應用,解耦應用和運行平臺。意味著遷移的時候,只需要在新的服務器上啟動需要的容器就可以了,無論新舊服務器是否是同一類型的平臺。這無疑將節約大量的寶貴時間,并降低部署過程出現問題的風險。
2,Docker在kai發和運維中的優勢:
- 更快速的交付和部署:使用Docker,kai發人員可以使用鏡像來快速構建一套標準的kai發環境;kai發完成之后,測試和運維人員可以直接使用完全相同環境來部署dai碼。只要kai發測試過的dai碼,就可以確保在生產環境無縫運行。Docker可以快速創建和刪除容器,實現快速迭dai,大量節約kai發、測試、部署的時間。并且,整個過程全程可見,使團隊更容易理解應用的創建和工作過程。
- 更高效的資源利用:Docker容器的運行不需要額外的虛擬化管理程序(VirtualMachineManager,VMM,以及Hypervisor)支持,它是內核級的虛擬化,可以實現更高的性能,同時對資源的額外需求很低。跟傳統虛擬機方式相比,要提高一到兩個數量級。
- 更輕松的遷移和擴展:Docker容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務器等,同時支持主流的操作系統發行版本。這種兼容性讓用戶可以在不同平臺之間輕松地遷移應用。
- 更簡單的更新管理:使用Dockerfile,只需要小小的配置修改,就可以替dai以往大量的更新工作。并且所有修改都以增量的方式被分發和更新,從而實現自動化并且高效的容器管理。
3,Docker與虛擬機比較:
- 作為一種輕量級的虛擬化方式,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/
- Docker值得關注的特性:
文件系統隔離:每個進程容器運行在一個完全獨立的根文件系統里。
資源隔離:系統資源,像CPU和內存等可以分配到不同的容器中,使用cgroup。網絡隔離:每個進程容器運行在自己的網絡空間,虛擬接口和IP地址。
日志記錄:Docker將會收集和記錄每個進程容器的標準流(stdout/stderr/stdin),用于實時檢索或批量檢索。
變更管理:容器文件系統的變更可以提交到新的映像中,并可重復使用以創建更多的容器。無需使用模板或手動配置。
交互式shell:Docker可以分配一個虛擬終端并關聯到任何容器的標準輸入上
在安裝docker之前,再說一點,docker現在有兩個版本,一個叫做docker-EE企業版,收費的一個叫docker-CE社區版,免費版,其實兩個版本并沒有太大的偏差,不一樣的是docker公司會提供后續的官方的技術支持等服務,對于我們來說,肯定用社區辦的多,我們拿來學習社區辦更是可以的。
安裝docker內核版本要求:3.10及以上
如果是centos6版本,因為centos6默認的內核版本是2.6,想要安裝docker,可以升級內核。
(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
##或者直接下載docker-ce.repo文件:
[root@k8s-master ~]# cd /etc/yum.repos.d/
[root@k8s-master yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@k8s-master yum.repos.d]# yum repolist
[root@k8s-master yum.repos.d]# yum -y install docker-ce
[root@k8s-master yum.repos.d]# docker –v
(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部署安裝及優化的全部內容。
———————— 本文至此結束,感謝閱讀 ————————
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。