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也成功安裝了