目的:

  Dockerfile简介

  Dockerfile制作jdk镜像


Dockerfile简介

  了解dockerfile之前要先了解Docker基本概念和使用可参考:https://www.cnblogs.com/huangting/p/11960196.html

  Dockerfile是一个文本文档,文本里面包含了很多命令,每一条命令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。有了 Dockerfile,当我们定义自己额外添加的需求时,只需在 Dockerfile 上添加或者修改指令,重新docker image build即可,省去了敲命令的麻烦。

  殷切我们使用Docker时其中的镜像和容器都是基于Dockerfile运行的,所以Dockerfile可以快速定义镜像;

简单来说就如同pom文件去构建maven工程一样

我们来用一张图来康康镜像,容器和Docker之间的关系:

  这三者的关系就是  Dockerfile构建镜像,然后运行镜像启动容器。

Dockerfile基本结构

    Dockerfile 由一行行命令语句组成,并支持以 # 开头的注释行。例如:

  主体内容分为四部分:

     基础镜像信息、 维护者信息、 镜像操作指令和容器启动时执行指令。

  基础镜像信息            FROM: 指令用于指定要构建的镜像的基础镜像。它通常是 Dockerfile 中的第一条指令。
维护者信息 MAINTAINER: 指令设置生成图像的作者字段。
镜像操作指令 RUN: 指令用于在镜像中执行命令,这会创建新的镜像层。每个 RUN 指令创建一个新的镜像层。
               (COPY/ADD): 指令用于将文件作为一个新的层添加到镜像中。通常使用 COPY 指令将应用代码赋值到镜像中。
               EXPOSE: 指令用于记录应用所使用的网络端口。
               WORKDIR:在执行RUN后面的shell命令前会先cdWORKDIR后面的目录
               ONBUILD:指令将映像用作另一个构建的基础时,将在以后的时间向该映像添加触发指令。
容器启动时执行指令 CMD: 指令中只能有一条指令Dockerfile,如果列出多个,则只有最后一个CMD才会生效,指令的主要目的是为执行中的容器提供默认值。
               ENTRYPOINT:指令用于指定镜像以容器方式启动后默认运行的程序。

Dockerfile参数详解:https://docs.docker.com/engine/reference/builder/

这是Docker官网:https://docs.docker.com/

我们在Docker中下载镜像就是在这里下载,然而这些镜像也是大神用Dockerfile写出来的,所以今天我们也要使用Docker来自定义一个jdk镜像,提供给自己用。


Dockerfile制作jdk镜像

  像以前的话,我们直接下载一个jdk镜像或者搞个jdk压缩包。

  

  然后把它放进centos中,解压不,然后去找etc下的profile文件,在里面添加你存放jdk的地址。

  

  然后java -version测试

  

现在我们自己用Docker制作来制作JDK镜像

启动虚拟机,进入centos

 #创建镜像目录
mkdir –p /javaxh_docker/jdk

  

#安装lrzsz命令
yum install lrzsz -y //没有就下载,有就不用下载,我之前一直下载失败,我以为镜像有问题,结果发现他自己有。
#选择文件进行上传
   rz  


  # 注意d是大写
touch Dockerfile //拷贝到容器

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

    执行vi Dockerfile 把下面的内容放进Dockerfile文件中:

     #1.指定基础镜像,并且必须是第一条指令
FROM centos: #2.指明该镜像的作者和其电子邮件
MAINTAINER xxx "xxx@qq.com" #3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /javaxh_docker/jdk #4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相对路径
ADD jdk-8u221-linux-x64.tar.gz /javaxh_docker/jdk/ #5.配置环境变量
ENV JAVA_HOME=/javaxh_docker/jdk/jdk1..0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH #容器启动时需要执行的命令
#CMD ["java","-version"]

  

3.执行Dockerfile文件,初次依赖镜像的时候会下载相应镜像

docker build -t jdk8:v1.0 .

   注1:-t  jdk8:v1.0  给新构建的镜像取名为 jdk8, 并设定版本为 v1.0

      注2:注意最后有个点,代表使用当前路径的 Dockerfile 进行构建

  4.查看镜像

docker images

  

  5.创建并启动容器

docker run -it jdk8:v1.0 /bin/bash

  6.检查是否有问题

 javac

谢谢观看!!

  

Docker之dockerfile制作jdk镜像的更多相关文章

  1. Docker —— 使用 Dockerfile 制作 Jdk + Tomcat 镜像

    一.准备好Jdk和Tomcat apache-tomcat-8.5.50.tar.gz jdk-8u212-linux-x64.tar.gz 注意: Jdk 和 Tomcat 记得从官网下载,否则制作 ...

  2. Dockerfile介绍、Docker制作jdk镜像

    Dockerfile介绍.Docker制作jdk镜像 目标 1.Dockerfile简介 2.Docker制作jdk镜像 Dockerfile简介 dockerfile 是一个文本格式的配置文件, 用 ...

  3. Docker系列(24)- 实战:DockerFile制作tomcat镜像

    实战:DockerFile制作tomcat镜像 step-1 准备镜像文件 tomcat压缩包,jdk压缩包! step-2 编写dockerfile文件,官方命名Dockerfile,build会自 ...

  4. docker通过dockerfile构建JDK最小镜像,Docker导出导入镜像

    docker通过dockerfile构建JDK最小镜像,Docker导出导入镜像 一.docker通过dockerfile构建JDK最小镜像 1.1 下载JRE 1.2 解压JRE,删除相关不需要文件 ...

  5. 基于Dockerfile制作tomcat镜像

    Docker 概述:   在前面的例子中,我们从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一种文件或脚本,我们把想执行的操 ...

  6. Docker之Alpine制作jre镜像(瘦身)+自定义镜像上传阿里云

    alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBo ...

  7. Docker将容器制作成镜像并提交到远程仓库

    Docker将容器制作成镜像并提交到远程仓库 步骤如下 先在dockerhub上创建一个自己的用户https://hub.docker.com/.或者在阿里云也可以. 2. 然后先创建一个空的镜像名. ...

  8. 使用Dockerfile制作JDK+tomcat镜像

    1.准备好jdk和tomcatapache-tomcat-8.5.32.tar.gzjdk-8u181-linux-x64.tar.gz 注意:a.jdk和tomcat记得从官网下载,否则制作出来的镜 ...

  9. Docker 0x05: Dockerfile制作镜像

    目录 Dockerfile制作镜像 一句话什么是dockerfile dockerfile脚本指令 小结 Dockerfile制作镜像 dockerfile 可以是制作自己镜像的脚本文件,按照这个脚本 ...

随机推荐

  1. navigator对象(了解即可)

    navigator是window的子对象 navigator.appName // Web浏览器全称navigator.appVersion // Web浏览器厂商和版本的详细字符串navigator ...

  2. SpringBoot + CXF快速实现SOAP WebService(支持Basic Auth)

    唠叨两句 讲真,SOAP跟现在流行的RESTful WebService比起来显得很难用.冗余的XML文本信息太多,可读性差,它的请求信息有时很难手动构造,不太好调试.不过说归说,对某些企业用户来说S ...

  3. 【Beta】Scrum meeting 3

    目录 写在前面 进度情况 任务进度表 Beta-1阶段燃尽图 遇到的困难 照片 commit记录截图 小程序前端仓库 技术博客 写在前面 例会时间:5.7 22:30-23:00 例会地点:微信群语音 ...

  4. 【Beta】Scrum meeting 8 & 助教参会记录

    目录 写在前面 进度情况 任务进度表 Beta-1阶段燃尽图 遇到的困难 助教参会会议情况 会议具体内容 Q:最近压力大吗?临近期末,注意好时间安排 Q:最近进度如何,以后的计划如何 Q:这段时间遇到 ...

  5. [Web] 取消Promise

    转载自 为Promise插上可取消的翅膀 const makeCancelable = (promise) => { let hasCanceled_ = false; const wrappe ...

  6. fluid.io.load_inference_model 载入多个模型的时候会报错 -- [paddlepaddle]

    将多个模型部署到同一个服务时,会出现stack错误. 原因是program为全局. 改成这样,可以解决. solved by myself. for those who need it:use a n ...

  7. springboot vue前后端分离 跨跨域配置

    public class CustomCorsFilter extends OncePerRequestFilter { @Override protected void doFilterIntern ...

  8. npm 加速之 yarn cnpm pnpm

    npm 加速之 yarn cnpm pnpm 有没有感觉到使用 npm 的时候很慢? 安装速度 几Kb/s 不说, 还装着装着出错了, 奇奇怪怪的问题.这种情况大多数还是因为网络的原因, 很多时候虽然 ...

  9. table 随td固宽

    //给table,td定最小宽度 table.sheetbody{table-layout: %;} td,th{ min-width: 100px; } <table border=" ...

  10. OpenShift 3.11离线环境的jenkins演示

    离线安装完成后,一般情况下只装了个基础环境,catalog镜像没有导入,本文主要侧重在jenkins的一些环境设置和演示. 1.导入镜像 首先follow下面链接下载镜像 https://docs.o ...