docker鏡像的製做以及容器的運行mysql
前言:docker安裝對Linux的內核要求3.8以上版本,能夠經過uname -r查詢linux內核另外一個要求必須運行在64位的操做系統上;如今的docker能夠運行在windows系統和Linux系統實現跨平臺。linux
介紹docker:程序員
Docker的英文本意是「搬運工」,在程序員的世界裏,Docker搬運的是集裝箱(Container),集裝箱裏裝的是任意類型的App,開發者經過Docker能夠將App變成一種標準化的、可移植的、自管理的組件,能夠在任何主流系統中開發、調試和運行。sql
說白了,docker是一種用了新穎方式實現的輕量級虛擬機,相似於VM,可是在原理和應用上和VM的差異仍是很大的.而且docker的專業叫法是應用容器(Application Container)。docker
爲啥要用容器?windows
應用容器是個啥樣子呢,一個作好的應用容器長得就像一個裝好了一組特定應用的虛擬機同樣,好比我如今想用mysql,那我就找個裝好了mysql的容器就能夠了,而後運行起來,我就能使用mysql了。centos
爲啥不能直接安裝一個mysql?安裝一個SQL Server也能夠啊,但是有的時候根據每一個人電腦的不一樣,在安裝的時候可能會報出各類各樣的錯誤,萬一你的機器中毒了,你的電腦掛了,你全部的服務都須要從新安裝.可是有了docker,或者說有了容器就不一樣了,你就至關於有了一個能夠運行起來的虛擬機,只要你能運行容器,mysql的配置就省了.並且若是你想換個電腦,直接把容器」端過來」就可使用容器裏面的服務.bash
1:(安裝docker)服務器
安裝docker有兩種方式:app
(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 p_w_picpaths
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建立p_w_picpaths
首先自定義目錄以後編寫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結尾的鏡像