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/博客/






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章