1. 程式人生 > 實用技巧 >三、Docker入門——dockerfile,容器的備份與遷移

三、Docker入門——dockerfile,容器的備份與遷移

一、Dockerfile

Dockerfile的本質就是由一系列順序編排的命令和引數組成的指令碼,並利用它把我們需要的應用製成一個映象檔案。

如下圖所示,映象與容器之間的關係:

前面我們都是直接通過docker pull映象,然後docker run的方式直接使用,而現實開發中,我們需要把我們自己的某個微服務模組製成映象(images)檔案,然後建立容器並啟動,那麼Dockerfile就要使用到了。

因為整個流程下來都是一樣的構建環境和指令,因此使用Dockerfile有一下優勢:


1、對於開發人員:可以為開發團隊提供完全一致的開發環境;

2、對於測試人員:可以直接用開發所製成的映象或者通過Dockerfile檔案構建一個新的映象開始工作了;

3、對於運維人員:在部署時,可以實現應用的無縫移植。

Dockerfile的常用命令如下:

命令 作用
FROM image_name:tag 使用哪個基礎映象啟動構建流程
MAINTAINER user_name 宣告映象的建立者
ENV key value 設定環境變數(可以寫多條)
RUN command Dockerfile的核心部分(可以寫多條)
ADD source_dir/file dest_dir/file

將宿主機的檔案複製到容器內,如果是一個壓縮檔案,將會在複製後自動解壓

COPY source_dir/file dest_dir/file

和ADD相似,但是如果有壓縮檔案並不能解壓

WORKDIR path_dir

設定工作目錄

EXPOSE port1 prot2

用來指定埠,使容器內的應用可以通過埠和外界交

CMD argument

在構建容器時使用,會被docker run後的argument覆

ENTRYPOINT argument 和CMD相似,但是並不會被docker run指定的引數覆蓋
VOLUME 將本地資料夾或者其他容器的檔案掛載到容器中

二、下面以JDK為例,製作自己的映象

1、在宿主機上建立目錄

 mkdir -p /usr/local/docker_jdk

  

2、把jdk壓縮包放入我們剛才建立的目錄,可通過Xftp6從本地上傳

3、建立Dockerfile檔案(注意我們這裡建立在和jdk壓縮包同級目錄,下面的命令中使用相對目錄,當然,你也可以使用絕對路徑找到jdk的壓縮包。)

sudo vim Dockerfile

  如下圖所示

4、下面就可以使用docker製作映象了(確保自己的docker已經啟動哦)

docker build-t='jdk1.8' .

注意:最後是有個“.”的,表示使用當前目錄的Dockerfile構建;

-t引數表示製成的映象名,可任意定義。

檢視映象,

可以看到,我們製作的jdk1.8映象已經有了,同時下載了我們在Dockerfile檔案第一行所依賴的centOS7映象!

5、使用我們製成的映象建立並執行容器

進入該容器,並檢視Java版本

大功告成!這樣,我們就可以在任意一臺安裝了docker的機器使用我們自制的jdk映象建立執行容器咯!

三、容器的備份與遷移

1、將容器儲存為映象

docker commit 容器名 儲存的映象名

  

可以看到my_jdk1.8_img是我們備份後得到的映象,而jdk1.8是是我們通過Dockerfile製成的。

2、備份

docker save –o 打包的後的檔名.tar 映象名

  

如果遇到permissiondenied的錯誤,這是許可權不夠導致的,在命令前加sudo即可。

3、恢復

docker load –i 你的備份映象tar包

  

參考https://mp.weixin.qq.com/s/5HK1khkGcTgsH8vKtrR4Pg