docker
Docker是什麼?
Docker是一個開源的應用容器引擎,你可以將其理解為一個輕量級的虛擬機器,開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上。
為什麼要使用 Docker?
作為一種新興的虛擬化方式, Docker 跟傳統的虛擬化方式相比具有眾多的優勢。
更高效的利用系統資源
由於容器不需要進行硬體虛擬以及執行完整作業系統等額外開銷, Docker 對系統資源的利用率更高。無論是應用執行速度、記憶體損耗或者檔案儲存速度,都要比傳統虛擬機器技術更高效。因此,相比虛擬機器技術,一個相同配置的主機,往往可以執行更多數量的應用。
更快速的啟動時間
傳統的虛擬機器技術啟動應用服務往往需要數分鐘,而 Docker 容器應用,由於直接運行於宿主核心,無需啟動完整的作業系統,因此可以做到秒級、甚至毫秒級的啟動時間。大大的節約了開發、測試、部署的時間。
一致的執行環境
開發過程中一個常見的問題是環境一致性問題。由於開發環境、測試環境、生產環境不一致,導致有些 bug 並未在開發過程中被發現。而 Docker 的映象提供了除核心外完整的執行時環境,確保了應用執行環境一致性,從而不會再出現 「這段程式碼在我機器上沒問題啊」 這類問題。
持續交付和部署
對開發和運維(DevOps" rel="nofollow,noindex" target="_blank">DevOps )人員來說,最希望的就是一次建立或配置,可以在任意地方正常執行。
使用 Docker 可以通過定製應用映象來實現持續整合、持續交付、部署。開發人員可以通過 Dockerfile 來進行映象構建,並結合 持續整合 (Continuous Integration) 系統進行整合測試,而運維人員則可以直接在生產環境中快速部署該映象,甚至結合 持續部署 (Continuous Delivery/Deployment) 系統進行自動部署。
而且使用 Dockerfile 使映象構建透明化,不僅僅開發團隊可以理解應用執行環境,也方便運維團隊理解應用執行所需條件,幫助更好的生產環境中部署該映象。
更輕鬆的遷移
由於 Docker 確保了執行環境的一致性,使得應用的遷移更加容易。Docker 可以在很多平臺上執行,無論是物理機、虛擬機器、公有云、私有云,甚至是筆記本,其執行結果是一致的。因此使用者可以很輕易的將在一個平臺上執行的應用,遷移到另一個平臺上,而不用擔心執行環境的變化導致應用無法正常執行的情況。
更輕鬆的維護和擴充套件
Docker 使用的分層儲存以及映象的技術,使得應用重複部分的複用更為容易,也使得應用的維護更新更加簡單,基於基礎映象進一步擴充套件映象也變得非常簡單。此外,Docker 團隊同各個開源專案團隊一起維護了一大批高質量的官方映象 ,既可以直接在生產環境使用,又可以作為基礎進一步定製,大大的降低了應用服務的映象製作成本。
對比傳統虛擬機器總結
Docker的主要用途,目前有三大類。
( 1)提供一次性的環境。比如,本地測試他人的軟體、持續整合的時候提供單元測試和構建的環境。
( 2)提供彈性的雲服務。因為 Docker 容器可以隨開隨關,很適合動態擴容和縮容。
( 3)組建微服務架構。通過多個容器,一臺機器可以跑多個服務,因此在本機就可以模擬出微服務架構。
Docker 包括三個基本概念
映象( Image)
容器( Container)
倉庫( Repository)
Docker 映象就是一個只讀的模板。
例如:一個映象可以包含一個完整的 ubuntu 作業系統環境,裡面僅安裝了 Apache 或使用者需要的其它應用程式。
映象可以用來建立 Docker 容器。
Docker 提供了一個很簡單的機制來建立映象或者更新現有的映象,使用者甚至可以直接從其他人那裡下載一個已經做好的映象來直接使用。
Docker 容器
Docker 利用容器來執行應用。
容器是從映象建立的執行例項。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。
可以把容器看做是一個簡易版的 Linux 環境(包括root使用者許可權、程序空間、使用者空間和網路空間等)和執行在其中的應用程式。
Docker 倉庫
倉庫是集中存放映象檔案的場所。有時候會把倉庫和倉庫註冊伺服器( Registry)混為一談,並不嚴格區分。實際上,倉庫註冊伺服器上往往存放著多個倉庫,每個倉庫中又包含了多個映象,每個映象有不同的標籤(tag)。
倉庫分為公開倉庫( Public)和私有倉庫(Private)兩種形式。
最大的公開倉庫是 Docker Hub ,存放了數量龐大的映象供使用者下載。
Centos安裝 docker
Docker 要求 CentOS 系統的核心版本高於 3.10 ,檢視本頁面的前提條件來驗證你的CentOS 版本是否支援 Docker 。
通過 uname -r 命令檢視你當前的核心版本
uname -r
解除安裝舊版本docker
yum remove docker \
docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
安裝依賴包
yum install -y yum-utils device-mapper-persistent-data lvm2
新增yum映象
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 快取
yum makecache fast
安裝 Docker-ce
yum -y install docker-ce
啟動 Docker 後臺服務
systemctl start docker
加入開機自啟
systemctl enable docker
因為映象為國外地址比較慢,所以換為國內映象
修改vi /etc/docker/daemon.json 這個檔案沒有就建立一個內容如下
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}