docker鏡像的製作以及容器的運行
前言:docker安裝對Linux的內核要求3.8以上版本,可以通過uname -r查詢linux內核另一個要求必須運行在64位的操作系統上;現在的docker可以運行在windows系統和Linux系統實現跨平臺。
介紹docker:
Docker的英文本意是“搬運工”,在程序員的世界裏,Docker搬運的是集裝箱(Container),集裝箱裏裝的是任意類型的App,開發者通過Docker可以將App變成一種標準化的、可移植的、自管理的組件,可以在任何主流系統中開發、調試和運行。
說白了,docker是一種用了新穎方式實現的輕量級虛擬機,類似於VM,但是在原理和應用上和VM的差別還是很大的.並且docker的專業叫法是應用容器(Application Container)。
爲啥要用容器?
應用容器是個啥樣子呢,一個做好的應用容器長得就像一個裝好了一組特定應用的虛擬機一樣,比如我現在想用mysql,那我就找個裝好了mysql的容器就可以了,然後運行起來,我就能使用mysql了。
爲啥不能直接安裝一個mysql?安裝一個SQL Server也可以啊,可是有的時候根據每個人電腦的不同,在安裝的時候可能會報出各種各樣的錯誤,萬一你的機器中毒了,你的電腦掛了,你所有的服務都需要重新安裝.但是有了docker,或者說有了容器就不同了,你就相當於有了一個可以運行起來的虛擬機,只要你能運行容器,mysql的配置就省了.而且如果你想換個電腦,直接把容器”端過來”就可以使用容器裏面的服務.
1:(安裝docker)
安裝docker有兩種方式:
(1)使用centos版本提供的docker,現在是docker1.13版本
(2)通過互聯網docker的官方下載網站爲http://www.hop5.in/yum/el6/hop5.repo最新版本爲docker17版本,docker的最新版本和之前的版本跳度較大
在這裏使用的是centos提供的docker
(3)docker的17版本分爲兩種dockerCE:社區版dockerEE:企業版
2:docker鏡像:
注:容器的運行離不開鏡像
鏡像的存在方式分爲兩種:一種是本地鏡像;另一種是倉庫鏡像
查看鏡像的命令:docker images
3:容器:
容器用來封裝任意類型的app,將app變成標準化輕量級的應用程序。差容器的命令: docker ps -a
優點:部署和容易擴展;效率高,內核級虛擬化,簡單來說四個字:多快好省
4:docker的結構:
C/s結構; c:docker daemon 服務端 s:docker client
Docker daemon 一般在宿主主機後臺運行。
Docker client以系統命令的形式存在,用戶用docker命令來跟docker daemon 交互。
Docker 守護進程(Docker daemon)
如上圖所示,Docker 守護進程運行在一臺主機上。用戶並不直接和守護進程進行交互,而是通過 Docker 客戶端間接和其通信。
Docker 客戶端(Docker client)
Docker 客戶端,實際上是docker的二進制程序,是用戶與 Docker 交互方式。它接收用戶指令並且與背後的 Docker 守護進程通信。
5:docker和傳統的虛擬化技術對比:
Docker 在如下幾個方面具有較大的優勢。
更快速的交付和部署
對開發和運維(devop)人員來說,最希望的就是一次創建或配置,可以在任意地方正常運行。開發者可以使用一個標準的鏡像來構建一套開發容器,開發完成之後,運維人員可以直接使用這個容器來部署代碼。 Docker 可以快速創建容器,快速迭代應用程序,並讓整個過程全程可見,使團隊中的其他成員更容易理解應用程序是如何創建和工作的。 Docker 容器很輕很快!容器的啓動時間是秒級的,大量地節約開發、測試、部署的時間。
更高效的虛擬化
Docker 容器的運行不需要額外的 hypervisor 支持,它是內核級的虛擬化,因此可以實現更高的性能和效率。
更輕鬆的遷移和擴展
Docker 容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務器等。這種兼容性可以讓用戶把一個應用程序從一個平臺直接遷移到另外一個。
更簡單的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發和更新,從而實現自動化並且高效的管理。
對比傳統虛擬機總結
特性 | 容器 | 虛擬機 |
啓動 | 秒級 | 分鐘級 |
硬盤使用 | 一般爲MB | 一般爲GB |
性能 | 接近原生 | 弱於 |
系統支持量 | 單機支持上千個容器 |
創建鏡像有兩種方式:
(1)docker commit 製作
缺點:容易有黑盒操作;不便和用戶之間共同分享
(2)dockerfile創建images
首先自定義目錄之後編寫dockerfile文件
文件格式:
# 註釋說明
FROM 基礎鏡像
MAINTAINER 作者
RUN 更新容器的指令
注 :鏡像最多爲127層否則不會成功爲了較少層,可以在更新容器的指令中執行多條指令使用&&符號鏈接
6:安裝docker服務:
1.安裝docker :yum -y install docker
2.啓動docker :systemctl enable docker
3.導入基礎鏡像
方法一:
4.將基礎鏡像加入鏡像倉庫: docker load --input centos7.tar
5.將基礎鏡像運行在容器中: docker run -i -t docker.io/centos:latest /bin/bash // 環境變量,可以不寫linux默認是此變量環境
6.在容器中作出修改,更新容器: yum -y install openssh-clients
7.退出容器後將修改後的容器做成鏡像 :docker -m “信息” -a “製作人” 容器的ID號 新的鏡像名稱
方法二:
8.創建dockerfile文件
9.編寫dockerfile文件注意文件格式
10.生成新的鏡像:docker build -t=”新的進項名稱:標籤” . 或者絕對路徑
11.導出鏡像到本地文件: docker save -o 導出後的包.tar 鏡像:標籤
12.將本地文件載入鏡像:docker load --input 以.tar結尾的鏡像