04.Docker DockerFile
一、DockerFile内容基础知识
1.每条保留字指令都必须为大写字母且后面要跟随至少一个参数
2.指令按照从上到下顺序执行
3.#表示注释
4.每条指令都会创建一个新的镜像层,并对镜像进行提交
二、常用保留字指令
FROM
基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER
镜像维护者的姓名和邮箱地址
RUN
容器构建时需要运行的命令
EXPOSE
当前容器对外暴露出的端口
WORKDIR
指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
ENV
用来在构建镜像过程中设置环境变量
ADD
将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY
类似ADD,拷贝文件和目录到镜像中。
将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
两种写法
COPY src dest
COPY ["src","dest"]
VOLUME
容器数据卷,用于数据保存和持久化工作
CMD
指定一个容器启动时要运行的命令
DockerFile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT
指定一个容器启动时要运行的命令
ENTRYPOINT的目的和CMD一样,都是指定容器启动程序及参数
ONBUILD
当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
DockerFile常用指令使用案例(只是语法案例)
#继承centos
FROM centos
#维护者姓名及邮箱
MAINTAINER luoruiyuan<luoruiyuan@live.com>
#把宿主机c.txt复制到容器/usr/local改名为test.txt
COPY c.txt /usr/local/test.txt
#把JDK复制到/usr/local/目录下并解压
ADD jdk-8u171-linux-x64.tar.gz /usr/local/
#安装tomcat
RUN yum -y install tomcat
#配置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_171
#$PATH必须写前面不然环境变量就只有JAVA_HOME了,“:”冒号为连接符
ENV PATH $PATH:$JAVA_HOME/bin
#设置工作访问的目录,也就是落脚点(可以直接写目录,也可以使用环境变量)
WORKDIR $JAVA_HOME
#容器运行时监听的端口
EXPOSE 8080
#运行一个命令(可以数组形式也可以直接写)
CMD ["echo","==========="]
CMD echo "success"
ENTRYPOINT ["user/local/apache-tomcat-9.0.8/bin/startup.sh"]
#当被继承是执行命令
ONBUILD RUN echo "------------------------"
三、构建命令
docker build -f dockerfile路径 -t 镜像名:版本 .
docker build -f /home/data/dockerfile -t lry/centos .
赞(1)
赏