Docker之Dockerfile快速创建自定义镜像

什么是Dockerfile

dockerfile是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像
另外,使用Dockerfile去构建镜像好比使用pom去构建maven项目一样,有异曲同工之妙

学习文档:Docker Dockerfile

有兴趣可以去看一下
在这里插入图片描述

思维导图

在这里插入图片描述

dockerfile基本结构

Dockerfile 由一行行命令语句组成, 并且支持以#开头的注释行,一般而言, Dockerfile 主体内容分为四部分:
基础镜像信息、 维护者信息、 镜像操作指令和容器启动时执行指令。

1.基础镜像信息

  • FROM
  • 指定哪种镜像为新镜像的基础镜像,比如ubuntu,centos
  • 当前新镜像是基于哪个镜像进行创建。即当前镜像继承自哪个镜像。Dockerfile 文件必须指定且需要在其他指令的前面指定。后续的指令都依赖于该指令指定的镜像。FROM指令指定的基础镜像可以是官方远程仓库中的,也可以位于本地仓库。该指令有两种格式:
FROM <image>
FROM <image>:<tag>

2.维护者信息

  • MAINTAINER
  • 指明该镜像的作者和其电子邮件
  • 署名的作用

3.镜像操作指令

加颜色为较为重要的

镜像操作指令作用
USER指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户
WORKDIR在构建镜像时,指定镜像的工作目录
(COPY/ADD)COPY单纯的复制 ADD复制之后还会对文件进行提取和解压等操作
EVN配置坏境变量
EXPOSE指定容器要暴露的端口
VOLUME用来向基于镜像创建的容器添加数据卷
RUN在新镜像内部要执行的命令,比如安装一些软件、配置一些基础环境,可使用\来换行

4.容器启动时执行指令

** 4.1CMD**

  • 比如:CMD
    [“java”,"-jar",“eureka-server-cluster.jar”,“spring.profiles=peer1”]
  • 指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD
    命令。如果指定了多条命令,只有最后一条会被执行。如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。

4.2ENTRYPOINT

  • 配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。每个 Dockerfile 中只能有一个 ENTRYPOINT

  • 当指定多个时,只有最后一个起效

4.3结论

  • ENTRYPOINT 不能覆盖掉执行时的参数,CMD 可以掉覆盖默认的参数

使用Dockerfile基于centos创建JDK8的镜像

1.创建文件夹上传jdk的安装包,和在同级目录下编写Dockerfile文件

touch Dockerfile

在这里插入图片描述
在这里插入图片描述
上图说错了是在jdk下创建Dockerfile文件

2.编写 Dockerfile 文件

#1.指定基础镜像,并且必须是第一条指令
FROM centos:latest

#2.指明该镜像的作者和其电子邮件
MAINTAINER zcx “xxx@qq.com”

#3.在构建镜像时,指定镜像的工作目录,之后基于该镜像创建的容器都是基于此目录下工作,如果不存在,则会创建目录
WORKDIR /usr/local/java

#4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD …
ADD jdk-8u221-linux-x64.tar.gz /usr/local/java/

#5.配置环境变量
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_221
ENV CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
ENV PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH

在这里插入图片描述

3.执行Dockerfile文件,构建jdk8的镜像

docker build -t jdk8:v1.0 . 后面有个点的啊

在这里插入图片描述

4.查看镜像

  • docker images

在这里插入图片描述
5.创建并启动容器

  • docker run -it -d --name helloDockerFile jdk8:v1.0 /bin/bash

在这里插入图片描述
6.进入容器

  • docker exec -it helloDockerFile bash
    在这里插入图片描述

7.检查是否有问题
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值