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的参数

相关文章
相关标签/搜索