1. 程式人生 > 其它 >Docker的使用--Dockerfile構建自己的映象

Docker的使用--Dockerfile構建自己的映象

概述:Dockerfile是由一系列命令和引數構成的指令碼,指令碼應用於基礎映象創建出一個新的映象。每一條指令構建一層,基於基礎映象,最終構建出一個新的映象

對專案組不同崗位的用處:

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

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

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

 

一:Docker File 的常見關鍵字

關鍵字 作用 備註
 FROM  指定父映象 指定dockerfile基於哪個映象開始構建
MAINTAINER 作者資訊 用來標明這個dockerfile誰寫的 
LABEL 標籤 用來標明dockerfile的標籤 可以使用Label代替Maintainer 最終都是在docker image基本資訊中可以檢視
RUN 執行命令 執行一段命令 預設是/bin/sh 格式: RUN command 或者 RUN ["command" , "param1","param2"]
CMD 容器啟動命令 提供啟動容器時候的預設命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD ["command" , "param1","param2"]
ENTRYPOINT 入口 一般在製作一些執行就關閉的容器中會使用
COPY 複製檔案 build的時候複製檔案到image中
ADD 新增檔案 build的時候新增檔案到image中 不僅僅侷限於當前build上下文 可以來源於遠端服務
ENV 環境變數 指定build時候的環境變數 可以在啟動的容器的時候 通過-e覆蓋 格式ENV name=value
ARG 構建引數 構建引數 只在構建的時候使用的引數 如果有ENV 那麼ENV的相同名字的值始終覆蓋arg的引數
VOLUME  定義外部可以掛載的資料卷 指定build的image那些目錄可以啟動的時候掛載到檔案系統中 啟動容器的時候使用 -v 繫結 格式 VOLUME ["目錄"]
EXPOSE 暴露埠 定義容器執行的時候監聽的埠 啟動容器的使用-p來繫結暴露埠 格式: EXPOSE 8080 或者 EXPOSE 8080/udp
WORKDIR 工作目錄 指定容器內部的工作目錄 如果沒有建立則自動建立 如果指定/ 使用的是絕對地址 如果不是/開頭那麼是在上一條workdir的路徑的相對路徑
USER 指定執行使用者 指定build或者啟動的時候 使用者 在RUN CMD ENTRYPONT執行的時候的使用者
HEALTHCHECK 健康檢查  指定監測當前容器的健康監測的命令 基本上沒用 因為很多時候 應用本身有健康監測機制
ONBUILD 觸發器 當存在ONBUILD關鍵字的映象作為基礎映象的時候 當執行FROM完成之後 會執行 ONBUILD的命令 但是不影響當前映象 用處也不怎麼大
STOPSIGNAL 傳送訊號量到宿主機  該STOPSIGNAL指令設定將傳送到容器的系統呼叫訊號以退出。
SHELL 指定執行指令碼的shell 指定RUN CMD ENTRYPOINT 執行命令的時候 使用的shell

 

示例:基於centos的lastest標籤映象,構建自定義的映象。

1、拉取centos映象:docker pull centos

2、我們以it(互動模式)執行centos容器,檢視下當前centos的預設執行結果:docker run -it --name=centos1 centos

檢視當前情況下vim的使用情況:vim a.txt

可以看到,CentOS的源映象預設登入路徑是根目錄/下,然後VIM命令是不可使用的,下邊我們將預設登入路徑改成/usr下,然後改成可以擁有VIM命令。

3、接下來編寫dockerfile檔案。

(1)定義父映象:From centos:7

(2)定義作者資訊:MAINTAINER lrc

(3)執行安裝VIM命令:RUN yum install -y yim

(4)定義預設的工作目錄:WORKDIR /usr

(5)定義容器啟動執行的命令:CMD /bin/bash

4、執行dockerfile檔案 docker build -f ./centos_dockerfile -t centos2 .

命令解析:-f:指定dockerfile的檔案路徑  -t:指定新映象名稱 ,特別要注意:命令末尾有個.

可以看到在一步一步執行我們dockerfile定義的步驟了。

 

5、檢視是否生成了自定義的映象檔案:docker images

 

6、執行我們自定義生成的映象:docker run -it --name=centos2 centos2

可以看到當前工作目錄已經成功修改為了/usr

VIM也成功安裝了