Dockerfile中指令詳解

思維的深度發表於2018-05-11

Dockerfile是一個文字格式的配置檔案,用於快速建立自定義的映象。

 

一、基礎結構

Dockerfile有一行行命令語句組成,並支援以# 開頭的註釋行

Dockerfile分為四部分:基礎映象資訊、維護者資訊、映象操作指令和容器啟動時執行的指令

例:

#第一行必須制定基於的基礎映象
FROM  ubuntu
#維護者資訊
MAINTAINER   docker_user docker_user@email.com
#映象操作
RUN  apt-get update && apt-get install -y nginx
#容器啟動時執行
CMD  /usr/sbin/nginx

 

二、Dockerfile中的指令

   1.FROM

     格式:

FROM <image>
FROM <image>:<tag>
FROM <image>@<digest>

作用:制定基礎映象

 
2.MAINTAIN

 格式:

MAINTAINER <name>

作用:指定維護者資訊

3.RUN

  格式:

   RUN <command> (由shell啟動,Linux預設為`/bin/sh -c`,Windows預設為`cmd /S /C`)
   RUN ["executable", "param1", "param2"]  (執行可執行檔案)

作用:構建映象時執行的命令

4.CMD

格式:

CMD ["executable","param1","param2"] (執行可執行檔案,優先)
CMD ["param1","param2"] (設定了ENTRYPOINT,則直接呼叫ENTRYPOINT新增引數)
CMD command param1 param2 (執行shell內部命令)

作用:

指定啟動容器時執行的命令,每個Dockerfile只能有一個CMD命令。如果有多個CMD命令,則只執行最後一條

 

 

5.EXPOSE

格式:

EXPOSE <port> [<port>…]

作用:

告訴Docker容器需要暴露的埠號,供互聯絡統使用

 

6.ENV

 格式:

ENV <key> <value>
ENV <key>=<value> ...

作用:

設定環境變數,在容器執行時保持

例:

RUN set -ex && apt-get update && apt-get install -y iputils-ping  
ENV PATH /usr/local/bin:$PATH  
ENV LANG C.UTF-8  
ENV TERM xterm  
ENV PYTHON_VERSION 3.5.3  
ENV name1=ping name2=on_ip  
CMD $name1 $name2 


7.ADD

格式:

ADD <src>  <dest>

作用:

該命令將複製指定的<src>到容器的<dest>,其中<src>可以是Dockerfile所在目錄的一個相對路徑(檔案或目錄)

 

8.COPY

格式:

COPY <src> <dest>

作用:

複製本地主機的<src>(Dockerfile所在目錄的相對路徑的檔案或目錄)到容器的<dest>。目標目錄不存在時,會自動建立,與ADD不同的是不會解壓壓縮檔案

 

9.VOLUMN

格式:

VOLUME ["/data"]

作用:

用於指定持久化目錄,在容器啟動時用-v傳遞引數,例如-v ~/opt/data/mysql:/var/lib/mysql將本機的~/opt/data/mysql和容器內的/var/lib/mysql做持久化關聯

容器啟動時會載入,容器關閉後會回寫。

 

10.ENTRYPOINT

格式:

ENTRYPOINT ["executable", "param1", "param2"] (可執行檔案, 優先)
ENTRYPOINT command param1 param2 (shell內部命令)

作用:

配置容器,使其可執行化。配合CMD可省去"application",只使用引數。

 例:

FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]

當啟動容器後,你將直接看到相當於執行了top -b -c

要進一步檢視,你可以直接使用命令docker exec -it test ps aux

相當於使用了docker exec top -b -it test ps aux

 

11. USER

格式:

USER daemon

作用:
  指定執行容器時的使用者名稱或uid,後續的RUN、CMD和ENTRYPOINT也會使用指定使用者

 

12. WORKDIR

格式:

WORKDIR /path/to/workdir

作用:

配置工作目錄

  

13.ONBUILD

格式:

ONBUILD  [INSTRUCTION]

作用:

配置當所建立的映象作為其他新建立映象的基礎映象時,所執行的操作指令。

 

14. ARG

格式:

ARG  parameter_name

作用:

由外部啟動時必須傳入的引數,在容器啟動時用--build-arg傳遞引數

例:

容器啟動時傳參: --build-arg CONT_IMG_VER=v2.0.1
FROM ubuntu
ARG CONT_IMG_VER


另:docker入門,進階和原始碼學習資料pdf(有需要的可留下郵箱)

 https://download.csdn.net/download/skh2015java/10246320

 

 

相關文章