dockerfile构建镜像

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/bash

2、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 argumentDockerfile中可以有多个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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值