1、FROM //指定基于那个基础镜像
格式FROM<image>或者FROM<image>:<tag>
例如:
FROM centos
FROM centos:latest
2、MAINTAINER //指定作者信息
格式MAINTAINER<name>
例如:
MAINTAINER fansik shandingshangdeyu@hotmail.com
3、RUN //镜像操作指令
格式为RUN<command>或者RUN["executable","param1","param2"]
例如:
RUN yum install httpd
RUN["/bin/bash","-c","echo hello"]
4、CMD //三种格式:
CMD["executable","param1","param2"]
CMD command param1 param2
CMD ["param1","param2"]
RUN和CMD看起来很像,但是CMD用来指定容器启动时用到的命令,只能有一条
例如:
CMD["/bin/bash","/usr/local/nginx/sbin/nginx","-c","/usr/local/nginx/conf/nginx.conf"]
5、EXPOSE
格式为EXPOSE<port>[<port>...]
例如:
EXPOSE 22 80 8443
这个用来指定要映射出去的端口,比如容器内部我们启动了sshd和nginx,所以我们要把22和80端口暴漏出去,这个需配合-P(大写)来工作,也就是说在启动容器时,需要加上-P(大写),让它自动分配,如果想指定具体的端口,也可以用-p(小写)来指定
6、ENV
格式ENV<key><values>
例如:
ENV PATH /usr/local/mysql/bin:$PATH
它主要是为后续的RUN指令提供一个环境变量,我们也可以定义一些自定义的变量
ENV MYSQL_version 5.6
7、ADD
格式:ADD<src><dest>
将本地的一个文件或目录拷贝到容器的某个目录里,其中src为Dockerfile所在目录的相对路径,它可以是一个url。
例如:
ADD<conf/vhosts></usr/local/nginx/conf>
8、COPY
格式同ADD
使用方法和ADD一样,不同的是它不支持url
9、ENTERYPOINT 格式类似CMD
容器启动是要执行的命令,它和CMD很像,也是只有一条生效,如果写多个只有最后一条生效。
和CMD不同的是:
CMD是可以被docker run指令覆盖的,而ENTRYPOINT不能覆盖,比如,容器名字为fansik,在Dockerfile中指定如下CMD:CMD["/bin/echo","test"]启动容器的命令是docker run fansik这样会输出test
如果启动容器的命令为docker run -it fansik /bin/bash什么都不会输出
ENTRYPOINT不会被覆盖,而且会比CMD活着docker run指定得命令要靠前执行
ENTRYPOINT["echo","test"]
docker run -it fansik 123
则会输出test 123,这相当于要执行命令echo test 123
10、VOLUME
格式VOLUME["/data"]
创建一个可以从本地主机或其他容器挂载的挂载点
11、USER
格式USER daemon
指定运行容器的用户
12、WORKDIR
格式WORKDIR /path/to/workdir
为后续的RUN、CMD或者ENTRYPOINT指定工作目录