FROM (指定base image)
用于Dockerfile开头语法,是用于docker build 创建的image是基于哪个image。如果不依赖其他iamge的话,则写scratch,反之写依赖的image的名称 ,如下方的两种写法。(尽量使用官方的image做为base image);
#制作base image
FROM scratch
#使用base image centos 为image的名称
FROM centos
LABEL(镜像描述)
包含image的一些基本信息,如作者,版本,image描述.
LABEL maintainer="liuwei"
LABEL version="1.0"
LABEL description="This is description"
RUN(运行指令)
通过Dockerfile制作镜像时需要运行的一些命令,为了美观,多个命令用&&进行相关联 。
若是命令过长,可以使用反斜线进行换行 \
RUN yum update && yum install -y vim \
python-dev
WORKDIR(指定工作目录)
指定当前工作目录,尽量使用WORKDIR 进行指定目录跳转,不要使用RUN cd。使用WORKDIR时尽量使用绝对路径。
WORKDIR /test #如果没有 会自动在/下创建test目录
WORKDIR demo #如果没有 会自动在/test下创建demo目录
RUN pwd #输出结果是/test/demo
ADD and COPY (添加文件)
ADD 和COPY 都是将本地文件添加到image中,,大部分情况,COPY 由于ADD。ADD比COPY 多了解压的功能
添加远程文件或目录请使用RUN curl 或者RUN wget。
ADD hello / #将本地的hello文件添加到镜像中根目录下
ADD test.tar.gz / #将本地test.tar.gz添加到根目录下并解压
WORKDIR /root
ADD hello test/ #将hello文件添加到/root/test目录下
WORKDIR /root
COPY hello test/ #将hello文件添加到/root/test目录下
ENV(设置常量)
设置常量,尽量使用ENV ,因为可以增加这个Dockerfile的可维护性
ENV MYSQL_VERSION 5.6 #创建一个MYSQL_VERSION常量,等于5.6
RUN apt-get install -y mysql-server="MYSQL_VERSION"\
&& rm -rf /var/lib/apt/lists/* #引用MYSQL_VERSION常量
EXPOSE(暴露端口号)
docker镜像暴露给外部的端口号,常用于docker run -p 进行端口映射