1. 程式人生 > >docker學習筆記(2)---Dockerfile

docker學習筆記(2)---Dockerfile

在docker學習筆記(1)中,我們提到了通過commit 的命令來提交新的image,下面我們來通過Dockerfile檔案來生成image,而且使用Dockerfile,很方便移植。

一、Dockerfile中幾個常用的指令:

(1)FROM

格式:

FROM  <image>
或者
 FROM  <image>:<tag>

(2)MAINTAINER

格式:

MAINTAINER  <name>

說明:設定生成image的作者

(3)RUN

格式:

使用shell 的形式

RUN  <command>
或 使用exec的形式
RUN ["executable",  "param1",  "param2"] 

說明:RUN指令會在當前的Image上的新一層layer執行指令,並提交結果。這些結果會在Dockerfile的下一步中使用到。

(4)CMD

格式:

CMD ["executable","param1","param2"]  
CMD ["param1","param2"] 
CMD command param1 param2

說明:CMD指令會在啟動container時執行服務,例如一個命令,啟動一個服務,或啟動一個指令碼之類的。

注意:一個Dockerfile檔案只能有一個CMD指令,如果有多條,則只有最後一條有效。

(5)ADD

格式:

ADD  <src>  .... <dest>

說明:

如果要ADD本地檔案,則本地檔案必須在 docker build <PATH>,指定的<PATH>目錄下,如:ADD files /root/hadoop_files/(注意,這裡hadoop_files後面要有/,否則在build Dockerfile時會失敗,提示說: lchown /var/lib/docker/aufs/mnt..........................not a directory之類的報錯資訊)

如果要ADD遠端檔案,則遠端檔案必須在 docker build <PATH>,指定的<PATH>目錄下,如:ADD ADD https://archive.apache.org/dist/hadoop/common/hadoop-1.0.4/hadoop-1.0.4-bin.tar.gz /root/

(6)VOLUME

格式:

VOLUME  ["/data"]
說明:可以將本地資料夾或者其他container的資料夾掛載到container中。

二、例子

下面的Dockerfile建立一個基於ubuntu:precise的映象。

通過docker build -t ubuntu:base . 命令執行。

#Authro:wgc
#Data:2014-10-24
#Introduction:Build basic development
From ubuntu:precise

# Set correct source list
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN echo "deb http://archive.ubuntu.com/ubuntu precise-updates main universe" >> /etc/apt/sources.list

# Install a few other useful packages plus Open Jdk 7
RUN apt-get update && apt-get upgrade -y && apt-get install -y openjdk-7-jdk wget vim sudo openssh-server 

# Add hadoop_files
ADD files /root/hadoop_files/

# Set JAVA_HOME
ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64
RUN echo export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 >> /root/.bashrc

# Download hadoop
ADD https://archive.apache.org/dist/hadoop/common/hadoop-1.0.4/hadoop-1.0.4-bin.tar.gz /root/



參考:

(1)docs.docker.com/reference/builder/

(2)http://blog.csdn.net/wsscy2004/article/details/25878223

(3)tonybai.com/tag/部落格/