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

Dockerfile 来快速创建自定义的镜像

    • 什么是Dockerfile
    • 思维导图
    • dockerfile基本结构
    • 使用Dockerfile基于centos创建JDK8的镜像

什么是Dockerfile

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

学习文档:Docker Dockerfile

有兴趣可以去看一下
Docker之Dockerfile快速创建自定义镜像_第1张图片

思维导图

Docker之Dockerfile快速创建自定义镜像_第2张图片

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

Docker之Dockerfile快速创建自定义镜像_第3张图片
Docker之Dockerfile快速创建自定义镜像_第4张图片
上图说错了是在jdk下创建Dockerfile文件

2.编写 Dockerfile 文件

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

#2.指明该镜像的作者和其电子邮件
MAINTAINER zcx “[email protected]

#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

Docker之Dockerfile快速创建自定义镜像_第5张图片

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

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

Docker之Dockerfile快速创建自定义镜像_第6张图片

4.查看镜像

  • docker images

Docker之Dockerfile快速创建自定义镜像_第7张图片
5.创建并启动容器

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

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

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

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

你可能感兴趣的:(Docker)