1、Dockerfile 用于构建一个新的Docker镜像的脚本文件,是由一系列命令和参数构成的脚本。
构建新的镜像步骤:
1. 编写 Dockerfile 文件
2. 通过 docker build 命令生成新的镜像
3. 通过 docker run 命令运行
FROM scratch # 基础镜像,scratch相当于java中的Object ADD centos-7-x86_64-docker.tar.xz / # centos
LABEL org.label-schema.schema-version="1.0" \ # 标签说明org.label-schema.name="CentOS Base Image" \
org.label-schema.vendor="CentOS" \
org.label-schema.license="GPLv2" \
org.label-schema.build-date="20190305"
CMD ["/bin/bash"] # 默认执行的命令,创建运行容器时最后会加上 /bin/bash, # 所以创建容器时,可不加 /bin/bash ,即如下: # docker run -it --name=mycentos0 centos:7 # 如果加了,则在后面采用我们自己加的命令执行/bin/bash2、Dockerfile语法规则
1. 每条指令的保留字都必须为大写字母且后面至少要有一个参数
2. 执行顺序按从上往下执行。
3. # 用于注释
4. 每条指令都会创建一个新的镜像层,并对镜像进行提交
3、Dockerfile 执行流程
1. Docker 从基础镜像运行一个容器
2. 执行每一条指定并对容器作出修改
3. 执行类似 docker commit 的操作提交一个新的镜像层
4. docker 再基于刚提交的镜像运行一个新容器
5. 执行 Dockerfile 中的下一条指令直到所有指令都执行完成
4、Dockerfile常用命令
指令(大写的是保留 字) 作用 参考 FROM image_name:tag 基础镜像,基于哪个基础镜像启动构建流程 MAINTAINER user_name 镜像的创建者的姓名和邮箱地址等 centos6.8 COPY source_dir/file dest_dir/fil 和ADD相似,但是如果有压缩文件并不能解压 centos6.8 ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件, 将会在复制 后自动解压 centos6.8 ENV key value 设置环境变量 (可以写多条) tomcat7 RUN command
是Dockerfile的核心部分(可以写多条),运行到当前行要执行的其他 命令(可想象成sout("aaa") )tomcat7 WORKDIR path_dir 设置工作目录,当创建容器后,命令终端默认登录进来后所在的目 录。未指定则为根目录 / tomcat7 EXPOSE port 当前对外暴露的端口号,使容器内的应用可以通过端口和外界交互 tomcat7 CMD argument Dockerfile中可以有多个CMD,但是只有最后一个会生效。在构建容 器时,会被 docker run 后面指定的参数覆盖 tomcat7 ENTRYPOINT argument 和CMD相似,但是并不会被docker run指定的参数覆盖,而是追加 参数 VOLUME 将宿主机文件夹挂载到容器中 5、构建镜像
构建一个jdk1.8的镜像文件
(1)、在宿主机上创建目录,并切换到新建的目录中
mkdir -p /usr/local/mydocker
cd /usr/local/mydocker
(2)、下载 jdk-8u111-linux-x64.tar.gz 并上传到服务器(虚拟机)中的 /usr/local/mydocker 目录
(3)、创建文件 Dockerfile:vim Dockerfile ,然后按字母 i 插入状态,粘贴以下内容
#来自基础镜像
FROM centos:7
#指定镜像创建者信息
MAINTAINER mengxuegu#切换工作目录 /usr/local
WORKDIR /usr/local#创建一个存放jdk的路径
RUN mkdir /usr/local/java
#将jdk压缩包复制并解压到容器中/usr/local/java
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
CMD ["/bin/bash"](4)、构建镜像语法:
docker build [-f 指定Dockerfile所在路径与文件名] -t 生成的镜像名:标签名 .
注意后边的 空格 和点 . 不要省略, . 表示当前目录-f 指定Dockerfile文件所在路径与文件名。如果未指定 -f 值,则找当前目录下名为 Dockerfile 的构建文件
示例: 生成镜像名为jdk,标签为1.8
docker build -t jdk:1.8.(5)、查看镜像是否构建完
docker images
dockerfile构建镜像
于 2020-07-10 23:04:13 首次发布