1.1 docker介紹
docker 使用 google 公司推出的 go 語言 進行開發實現,基於 linux 核心的cgroup,namespace,以及 aufs 類的 union fs 等技術,對程序進行封裝隔離,屬於作業系統層面的虛擬化技術。由於隔離的程序獨立於宿主和其它的隔離的程序,因此也稱其為容器。最初實現是基於 lxc,從 0.7 版本以後開始去除 lxc,轉而使用自行開發的
libcontainer,從 1.11 開始,則進一步演進為使用 runc 和 containerd。源**託管在 github 上, 基於go語言並遵從apache2.0協議開源。
1.2 cgroup和namespace介紹
cgroup是control group,又稱為控制組,它主要是做資源控制。原理是將一組程序放在放在乙個控制組裡,通過給這個控制組分配指定的可用資源,達到控制這一組程序可用資源的目的。
namespace又稱為命名空間,它主要做訪問隔離。其原理是針對一類資源進行抽象,並將其封裝在一起提供給乙個容器使用,對於這類資源,因為每個容器都有自己的抽象,而他們彼此之間是不可見的,所以就可以做到訪問隔離。
1.3 docker與傳統虛擬化的區別
容器是在作業系統層面上實現的虛擬化,直接復用本地主機的作業系統,而傳統方式則是在硬體層面實現。
1.4 docker的優勢
docker的執行不需要額外的虛擬化管理程式(virtual machine manager,vmm,以及hypervisor)支援,它是核心級的虛擬化,可以實現更高的效能,同時對資源的額外需求更低。和傳統的虛擬化相比,要提高一到兩個數量級。
傳統的虛擬機器技術啟動應用服務往往需要數十秒,而docker容器應用,由於直接執行於宿主核心,無需啟動完整的作業系統,因此可以做到秒級、甚至毫秒級的啟動時間。大大的節約了開發、測試、部署的時間。
開發過程中乙個常見的問題是環境一致性問題。由於開發環境、測試環境、生產環境不一致,導致有些 bug並未在開發過程中被發現。而docker的映象提供了除核心外完整的執行時環境,確保了應用執行環境一致 性,從而不會再出現 「這段**在我機器上沒問題啊」這類問題。
使用docker,開發人員可以使用映象來快速構建一套標準的開發環境;開發完成之後,測試和運維人員可以直接使用完全相同的環境來部署**。只要開發測試過的**,就可以確保在生產環境無縫執行。docker可以快速建立和刪除容器,實現快速迭代,大量節約開發、測試、部署的時間。並且,整個過程可見,使團隊更容易理解應用的建立和工作過程。
由於docker確保了執行環境的一致性,使得應用的遷移更加容易。docker 可以在很多平台上執行,無論是物理機、虛擬機器、公有雲、私有雲,其執行結果是一致的。因此使用者可以很輕易的將在乙個平台上執行的應用,遷移到另一 個平台上,而不用擔心執行環境的變化導致應用無法正常執行的情況。
docker使用的分層儲存以及映象的技術,使得應用重複部分的復用更為容易,也使得應用的維護更新更加簡單,基於基礎映象進一步擴充套件映象也變得非常簡單。此外,docker團隊同各個開源專案團隊一起維護了一大批高質量的官方映象,既可以直接在生產環境使用,又可以作為基礎進一步定製,大大的降低了應用服務的映象製作成本。
1.5 docker與虛擬機器的區別
1.6 docker的核心概念
映象(image):類似於虛擬機器的映象,可以將它理解為乙個面向docker引擎的唯讀模板,包含了檔案系統。
容器(container):類似於乙個輕量級的沙箱,docker利用容器來執行和隔離應用。容器是從映象建立的應用執行例項,可以將其啟動、開始、停止、刪除,而這些容器都是相互隔離、互不可見的。
倉庫(respository):類似於**倉庫,只docker集中存放映象檔案的場所。
docker ce 支援 64 位版本 centos 7,並且要求核心版本不低於 3.10。 centos 7.4 及以上滿足核心的要求(如 overlay2 儲存層驅動,使用較多為ubuntu是因為核心版本較高 )。
同時 docker 劃分為 ce 和 ee。ce 即社群版(免費,支援週期三個月),ee 即企業版,強調安全,付費使用。
可參見官方安裝文件安裝
2.1 若有舊的docker程式,先進行解除安裝yum2.2 安裝依賴軟體包remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
yum2.4 安裝docker-ce2.3 安裝阿里的yum源
# 或者使用docker自己的安裝源也行
yum update -y && yum -y install docker-ce2.5 配置映象加速
# docker中國加速2.6 啟動docker服務cat /etc/docker/daemon.json
systemctl start docker2.7 配置本地的docker倉庫、dns、儲存目錄(沒有映象前配置)。systemctl enable docker
cat /etc/docker/daemon.json
Docker介紹及安裝
docker介紹 docker安裝 這裡的安裝環境為centos6.4,其他系統的安裝請參考這裡。首先,你需要安裝epel倉庫,請看這裡epel installation instructions.也可以看我另外一篇文章 centos 5 6上安裝epel源 docker的包是由epel提供的 如果...
docker筆記(一) 介紹及安裝
docker 是乙個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到乙個可移植的容器中,然後發布到任何流行的 linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。docker 是乙個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到乙個可移植的容器...
Docker 介紹及使用
容器化是軟體開發的一種方法,通過該方法可以將應用程式或服務 其依賴項及其配置一起打包為容器映像。容器化應用程式可以作為乙個單元進行測試,並可以作為容器映像例項,部署到主機作業系統。軟體容器充當軟體部署的標準單元,it和軟體開發人員可以進行極少的改動,即可將其部署到不同的環境。容器還會在共享os上講應...