docker鏡像的製作和容器的運行

               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)docker17版本分爲兩種dockerCE:社區版dockerEE:企業版

2docker鏡像:

注:容器的運行離不開鏡像

鏡像的存在方式分爲兩種:一種是本地鏡像;另一種是倉庫鏡像

查看鏡像的命令:docker  images

3:容器:

容器用來封裝任意類型的app,將app變成標準化輕量級的應用程序。差容器的命令: docker  ps  -a

優點:部署和容易擴展;效率高,內核級虛擬化,簡單來說四個字:多快好省

4docker的結構:

C/s結構; cdocker daemon 服務端   sdocker client

 wKiom1kP5CixN5VeAABmNoLMZ4c327.png-wh_50

Docker daemon 一般在宿主主機後臺運行。

Docker client以系統命令的形式存在,用戶用docker命令來跟docker daemon 交互。

 

Docker 守護進程Docker daemon

如上圖所示,Docker 守護進程運行在一臺主機上。用戶並不直接和守護進程進行交互,而是通過 Docker 客戶端間接和其通信。

Docker 客戶端Docker client

Docker 客戶端,實際上是docker的二進制程序,是用戶與 Docker 交互方式。它接收用戶指令並且與背後的 Docker 守護進程通信。

5:docker和傳統的虛擬化技術對比:

wKiom1kP5EXQBKAIAAGK_vLRX7E871.png-wh_50 

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

wKiom1kP5F_zuAPYAABlXidLhq0506.png-wh_50 

2.啓動docker systemctl enable docker

wKiom1kP5HKS3ooYAAAvw5I62dg671.png-wh_50 

3.導入基礎鏡像

wKioL1kP5IPBTJG7AAAk8KVcPHw121.png-wh_50 

方法一:

4.將基礎鏡像加入鏡像倉庫 docker load --input centos7.tar

wKiom1kP5JfRPQBSAAAb3MIQrY0492.png-wh_50 

5.將基礎鏡像運行在容器中 docker run -i -t docker.io/centos:latest /bin/bash  // 環境變量,可以不寫linux默認是此變量環境

wKioL1kP5LeAxJ1kAAALt04gBqE119.png-wh_50 

6.在容器中作出修改更新容器: yum -y install openssh-clients

wKioL1kP5MzRnkCzAAAOKMm15QE804.png-wh_50 

7.退出容器後將修改後的容器做成鏡像 docker -m 信息 -a 製作人  容器的ID號  新的鏡像名稱

wKiom1kP5N6TUVoYAABajwV9r6g471.png-wh_50 

方法二:

8.創建dockerfile文件 

wKioL1kP5PDQ38nJAAAX8euAj9g555.png-wh_50 

9.編寫dockerfile文件注意文件格式

wKiom1kP5QWjoOIXAAAZIlgTZZM050.png-wh_50 

10.生成新的鏡像docker build -t=新的進項名稱:標籤  . 或者絕對路徑

wKiom1kP5RnD6K-tAABjCWReLWk596.png-wh_50 

wKioL1kP5SzQwAZ-AAAghh-pgs0109.png-wh_50 

 

11.導出鏡像到本地文件 docker save -o 導出後的包.tar  鏡像:標籤

wKioL1kP5T-RyIfOAAAbF5xfEY8864.png-wh_50 

12.將本地文件載入鏡像docker load --input .tar結尾的鏡像

wKioL1kP5VGTF3EvAACNjfONm3c469.png-wh_50 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章