1、基本結構
Dockerfile由一行行命令語句組成,並支持以#開頭的註釋行。例如
# This dockerfile uses the ubuntu image
# VERSION 2 - EDITION 1
# Author: docker_user
# Command format: Instruction [arguments / command ] ..
# Base image to use, this nust be set as the first line
FROM ubuntu
# Maintainer: docker_user <docker_user at email.com> (@docker_user)
MAINTAINER docker_user docker_user@email.com
# Commands to update the image
RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
# Commands when creating a new container
CMD /usr/sbin/nginx
其中,開始必須指明所基於的鏡像名稱,接下來一般是說明維護者信息。後面則是鏡像操作指令,例如RUN指令,RUN指令將對鏡像執行跟隨的命令。每運行一條RUN指令,鏡像就添加新的一層,並提交。最後是CMD指令,用來指定運行容器時的操作命令。
2. 指令說明
指令的一般格式爲INSTRUNCTION arguments,指令包括FROM、MAINTAINER、RUN等。具體指令及說明如下:
指令 | 說明 |
FROM | 指定所創建鏡像的基礎鏡像 |
MAINTAINER | 指定維護者信息 |
RUN | 運行命令 |
CMD | 指定啓動容器時默認執行的命令 |
LABEL | 指定生成鏡像的元數據標籤信息 |
EXPOSE | 聲明鏡像內服務所監聽的端口 |
ENV | 指定環境變量 |
ADD | 賦值指定的<src>路徑下的內容到容器中的<dest>路徑下,<src>可以爲URL;如果爲tar文件,會自動解壓到<dest>路徑下 |
COPY | 賦值本地主機的<scr>路徑下的內容到容器中的<dest>路徑下;一般情況下推薦使用COPY而不是ADD |
ENTRYPOINT | 指定鏡像的默認入口 |
VOLUME | 創建數據掛載點 |
USER | 指定運行容器時的用戶名或UID |
WORKDIR | 配置工作目錄 |
ARG | 指定鏡像內使用的參數(例如版本號信息等) |
ONBUILD | 配置當前所創建的鏡像作爲其他鏡像的基礎鏡像時,所執行的創建操作的命令 |
STOPSIGNAL | 容器退出的信號 |
HEALTHCHECK | 如何進行健康檢查 |
SHELL | 指定使用SHELL時的默認SHELL類型 |