基於Docker和Kubernetes構建的部署管理和集羣管理

脈衝雲的部署管理和集羣管理底層基於Docker實現,簡單瞭解一下Docker。java

其實脈衝雲對底層技術作了很好的封裝,你只須要了解到代碼中的Dockerfile能構建成鏡像,鏡像保存在脈衝雲的鏡像倉庫中,部署管理能將鏡像部署到你的服務器節點上,而後你能在線查看應用的運行狀態、控制啓停,這就夠了。

對 Docker 的瞭解,能讀懂下圖也就夠了,圖中有五個對象:鏡像、容器、鏡像倉庫、備份文件、Dockerfile,而且有多個藍色字體標出的命令,用來將各類對象互相轉換、生成,接下來一一介紹:
docker


鏡像編程

你能夠簡單理解鏡像是一個壓縮包,這個包中,有你的程序或代碼,還有一個文件系統,所謂文件系統,就是打包了一個標準操做系統的全部必須文件,可執行程序、運行庫等。ubuntu

Docker 之因此解決了程序執行環境一致性問題,就是將應用程序和文件系統打包到了一塊兒,程序運行時,從你打包的鏡像文件系統中加載依賴,好比,你的程序依賴 JDK 1.8,那麼將鏡像中打包上 JDK1.8 的基礎庫,而後不管將鏡像部署到何種環境的系統上,不管那臺主機是否安裝了 JDK,或安裝了任意版本的 JDK,你的應用程序啓動時,都能一致性地加載鏡像中的 JDK1.8,避免了因環境不統一形成的部署難題和運行時 BUG。

能夠經過 ID 或名稱識別鏡像,ID 是 SHA256 格式的 HASH 值,例如:tomcat

b1183dab1c4049b9b9d0d0dff17d2eb04e8d9caf873f7ff505ff9fe8909e2a48 
能夠簡寫作 b1183dab1c40
複製代碼

鏡像名稱分爲鏡像名和 Tag 兩部分組成,中間以冒號分別,若是 Tag 省略,則表明 latest,好比:
bash

# Docker 官方鏡像,省略了 Tag
Ubuntu
# Docker 官方鏡像,指定 Tag
ubuntu:16.04
# Docker Hub 上非 Docker 官方的鏡像 
maichong/ubuntu:16.04
# 脈衝雲倉庫中的鏡像,帶鏡像倉庫地址 
maichong.io/project/ubuntu:16.04
複製代碼

可使用 docker tag 命令給已經存在的鏡像打上一個新標籤,好比:服務器

# 給 ubuntu:16.04 增長一個新標籤 maichong.io/project/ubuntu:16.04
docker tag ubuntu:16.04 maichong.io/project/ubuntu:16.04
複製代碼

查看當前系統中全部的鏡像列表:網絡

> docker images
REPOSITORY  TAG  IMAGE ID  CREATED  SIZE 
ubuntu 16.04 e13f3d529b1a 6 days ago 115MB
複製代碼

容器
app

能夠簡單理解鏡像是「死的」,是磁盤上儲存的「靜態的」文件,而容器,則是運行起來的、內存中的、「動態的」實例。固然,容器不必定是運行着的,容器也能中止。性能

經過 docker run 命令能夠從一個鏡像啓動一個容器,一個鏡像能夠啓動無限個容器副本,每一個容器還互相隔離,能夠將一個個容器理解成一個個虛擬機,每一個容器都有本身的 IP、文件系統等等。

和虛擬機相比,容器運行時雖然網絡、文件等資源是隔離的,可是共享主機的內核,即,Docker 沒有爲每一個容器都從頭啓動內核,而是在當前主機系統的內核中運行容器中的程序,這相對於 VM 虛擬機有很是大的性能優點,因此稱 Docker 爲輕量虛擬化。

能夠經過 docker start / docker stop / docker restart 控制容器的啓動、中止、重啓。

運行 docker commit 命令能夠將正在運行的容器生成一個新版本的鏡像,可是推薦使用Dockerfile 生成鏡像。

Dockerfile

簡言之,Dockerfile 是生成鏡像的配置文件,例如:

# 指定 tomcat 版本 
FROM tomcat:8.5.32-jre8

# 指定工做目錄 
WORKDIR /app

# 將打包後的 server.jar 拷貝到鏡像中
# 可使用脈衝雲的編譯構建服務,在線將源碼打包成 jar
ADD server.jar /app/server.jar

# 設置鏡像的啓動命令
CMD java -jar /app/server.jar

# 聲明須要監聽的端口 
EXPOSE 8080
複製代碼

該文件中首先聲明瞭鏡像的基礎鏡像,通常狀況下,你構建的鏡像須要依賴一個基礎鏡像,就像你在一個電腦上安裝軟件的前提是這個電腦已經有了一個操做系統。

而後 Dockerfile 中記錄着生成新鏡像的一個個步驟,包括拷貝文件、執行命令等。

Dockerfile 中還包含着一些其餘信息的聲明,好比環境變量、標註須要開放的端口等。

使用 docker build 命令,能夠依照 Dockerfile 中記錄的步驟,一步步生成新的鏡像。

在正在運行的容器內執行一個個命令,安裝一個個軟件,而後運行 docker commit 也能生成一個新的鏡像,可是請不要這樣操做。由於,使用 Dockerfile 能夠記錄下來鏡像的生成過程,而且可以隨時調整其中的步驟,從新生成鏡像。這就是傳說中的基礎設施即代碼,將基礎環境的配置當作軟件編程來進行。

備份文件

可使用 docker save 命令,將你電腦上生成的鏡像導出成 tar 打包文件,而後用來數據備份,或將文件拷貝到其餘電腦上,用 docker load 命令導入鏡像,實現鏡像的分發。

可是,這樣操做很是麻煩,尤爲是遠程傳輸。請使用鏡像倉庫來進行統一管理和分發。

鏡像倉庫

鏡像倉庫就是一個在線提供鏡像存儲的服務。使用 docker pull 從鏡像倉庫中拉取(下載)鏡像,使用 docker push 命令將本地鏡像推送(上傳)到鏡像倉庫中。

一般咱們全部用到的鏡像都來自 Docker 官方倉庫 hub.docker.com ,對於企業用戶,脈衝雲也提供了企業私有鏡像倉庫,你必須擁有指定項目的權限,而且經過 docker login maichong.io 登陸後才能向脈衝雲中推拉鏡像。

相關文章
相關標籤/搜索