1、保留字
FROM 基础镜像 #以基础镜像作为模板 RUN shell格式或exec格式的命令(yum install net-tool) #在构建build时会执行 EXPOSE #暴露端口映射 WORKDIR #指定登录终端的落脚点 ENV #设置环境变量 VOLUME #容器卷 ADD #将宿主机的文件拷贝到镜像并解压 COPY #将宿主机的文件拷贝到镜像 CMD #指定容器启动后要干的事,只能最后一个CMD生效, #CMD会被docker run后面的参数替换(例如执行tomcat使用-it加bash等于CMD["bash","run"])就把CMD["catalina.sh","run"]替代了 #CMD是在docker run的时候执行 ENTRYPOINT # 类似于CMD指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当作参数送给ENTRYPOINT指令指定的程序 #当指定了ENTRYPOINT,CMD不再作为命令执行,而是作为ENTRYPOINT的传递参数. ENTRYPOINT["nginx","-c"]#定参 CMD["/etc/nginx/nginx.conf"]#传参 #如果没有传参则按照dockerfile执行 #docker命令 docker run nginx:test - 传参 docker run nginx:test -c /etc/nginx/newconf.conf #实际命令 nginx -c /etc/nginx/nginx.conf - 传参 nginx -c /etc/nginx/newconf.conf
2、案例
centos镜像具备jdk8和vim以及ifconfig
1、在根目录新建一个myfile,放入jdk-8u333-linux-i586.tar.gz
2、编写makefile
FROM centos:7 MAINTAINER testENV MYPATH /usr/local WORKDIR $MYPATH RUN yum -y install vim #安装vim RUN yum -y install net-tools #安装ifconfig RUN yum -y install glibc.i686 RUN mkdir /usr/local/java ADD jdk-8u333-linux-i586.tar.gz /usr/local/java/ #配置java环境变量 ENV JAVA_HOME /usr/local/java/jdk1.8.0_333 ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH $JAVA_HOME/lib/dt. jar: $JAVA_HOME/lib/tools. jar: $JRE_HOME/lib: $CLASSPATHENV ENV PATH $JAVA_HOME/bin: $PATH CMD echo $MYPATH CMD echo "success..ok" CMD /bin/bash
3、构建
docker build -t 新镜像的名字:tag Dockerfile路径



