Dockerfile相关
谁什么
概念
Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本
步骤
编写Dockerfile文件 ----> docker build命令构建镜像 ----> docker run 运行新镜像构建容器实例
Dockerfile内容的基础知识或约定
1.每条保留字指令都是大写字母并且后面要跟随至少一个参数
2.指令按照从上到下,顺序执行
3.#表示注释
4.每条指令都会创建一个新的镜像层并对镜像进行提交
常用保留字指令
FROM 指定基础镜像,就是说你要构建的镜像要以哪个镜像为基础
MAINTAINER 镜像维护者的姓名和邮箱
RUN docker build 时执行的命令
EXPOSE 当前容器对外暴露的端口
WORKDIR 指定在创建容器后,终端默认登录进去的一个工作目录,一个落脚点
USER 指定镜像以哪个用户执行,默认root
ENV 设置环境变量
ADD 将宿主机的文件添加到镜像中,要求要添加的文件在宿主机的目录要跟Dockerfile是一个目录
COPY 类似ADD
VOLUME 指定容器数据卷
CMD 执行命令,在docker run 时执行,只有最后一个CMD命令生效
ENTRYPOINT 类似CMD
案例
比如要使用Dockerfile构建一个具备vim+ifconfig+jdk8的CentOS7镜像
1.将jdk-8u171-linux-x64.tar.gz放在宿主机的 /home/mytest
2.将Dockerfile文件放到宿主机的 /home/mytest (哪个目录都行,只要保证和jdk-8u171-linux-x64.tar.gz同目录)
3.编写Dockerfile内容
FROM centos
MAINTAINER zzyy<[email protected]>
ENV MYPATH /usr/local
WORKDIR $MYPATH
#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 80
CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash
4.在宿主机的 /home/mytest (哪个目录都行,只要是Dockerfile文件同级就行)执行以下命令
# centosjava8是自己起的新镜像名字,1.5是自己定的版本号TAG, 后面那个点.必须有
docker build -t centosjava8:1.5 .
5.运行
#docker run -it 新镜像名:TAG
docker run -it centosjava8:1.5
标签:镜像,CMD,ENV,HOME,相关,docker,Dockerfile
From: https://www.cnblogs.com/lfh-blog/p/18064284