Dockerfile語法

github上有docker-library:       python

https://github.com/docker-librarymysql

1、FROMlinux

一、從頭開始建立鏡像:git

FROM scratch

二、基於某個鏡像開始建立鏡像:github

FROM ubuntu:14.04
FROM centos

三、備註:最好使用官方的image做爲base image,這樣安全性高sql

2、LABEL(能夠看作是註釋)docker

案例:ubuntu

LABEL version="1.0"
LABEL description="This is description"

3、RUN(執行命令並建立新的 Image Layer)vim

一、案例:centos

RUN yum update && yum install -y vim \
python-dev   #反斜線換行

二、備註:

每個RUN會建立一層新的container,因此最好使用&&合併多條命令,使用反斜線\進行換行

4、WORKDIR(相似linux的cd)

一、案例:

WORKDIR /test  #若是沒有該目錄會自動建立
WORKDIR demo
RUN pwd           #輸出結果爲/test/demo

二、備註:

1)使用WORKDIR,不要用RUN cd
2) 儘可能使用絕對目錄

5、ADD  and  COPY(把本地文件添加到鏡像中)

一、案例:

ADD hello /
WORKDIR /root
ADD hello test/   #/root/test/hello

WORKDIR /root
COPY hello test/

二、ADD和COPY的區別:

ADD test.tar.gz / #ADD添加到根目錄而且解壓

 三、備註:

1) 大部分狀況下,COPY優於ADD
2) ADD除了COPY功能外還有解壓功能
3) 添加遠程文件/目錄請使用curl或者wget

6、ENV(設置常量)

一、案例:

ENV MYSQL_VERSION 5.6  #設置常量
RUN apt-get install -y mysql-server="${MYSQL_VERSION}" \
&& rm -rf /var/lib/apt/list/*  # 引用常量

二、備註:儘可能使用ENV增長可維護性

7、CMD &&  ENTRYPOINT

 

一、CMD (設置容器啓動後默認執行的命令和參數)

1)容器啓動時默認執行的命令

2)若是docker run指定了其餘命令,CMD命令被忽略

3)若是定義了多個CMD,只有最後一個會執行

 

二、ENTRYPOINT(設置容器啓動時運行的命令)

1)讓容器以應用程序或服務的形式運行

2)不會被忽略,必定會執行

 

三、CMD配合ENTRYPOINT

1) 案例:

FROM ubuntu:14.04
RUN apt-get update && apt-get install -y stress
ENTRYPOINT ["/usr/bin/stress"]
CMD []

2) 說明:這裏的CMD [] 用於接收/usr/bin/stress的參數

相關文章
相關標籤/搜索