Dockerfile语法

构建自定义的镜像时,并不需要一个个文件去拷贝,打包。

我们只需要告诉Docker,我们的镜像的组成,需要哪些BaseImage、需要拷贝什么文件、需要安装什么依赖、启动脚本是什么,将来Docker会帮助我们构建镜像。

而描述上述信息的文件就是Dockerfile文件。

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。

更新详细语法说明,请参考官网文档: Dockerfile reference | Docker Documentation

基于Ubuntu构建Java项目

需求:基于Ubuntu镜像构建一个新镜像,运行一个java项目

  • 步骤1:新建一个空文件夹docker-demo

  • 步骤2:拷贝课前资料中的docker-demo.jar文件到docker-demo这个目录

  • 步骤3:拷贝课前资料中的jdk8.tar.gz文件到docker-demo这个目录

  • 步骤4:拷贝课前资料提供的Dockerfile到docker-demo这个目录

其中的内容如下:

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar# 安装JDK
RUN cd $JAVA_DIR \&& tar -xf ./jdk8.tar.gz \&& mv ./jdk1.8.0_144 ./java8# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
  • 步骤5:进入docker-demo

    将准备好的docker-demo上传到虚拟机任意目录,然后进入docker-demo目录下

  • 步骤6:运行命令:

docker build -t javaweb:1.0 .

最后访问 http://192.168.150.101:8090/hello/count,其中的ip改成你的虚拟机ip

基于java8构建Java项目

虽然我们可以基于Ubuntu基础镜像,添加任意自己需要的安装包,构建镜像,但是却比较麻烦。所以大多数情况下,我们都可以在一些安装了部分软件的基础镜像上做改造。

例如,构建java项目的镜像,可以在已经准备了JDK的基础镜像基础上构建。

需求:基于java:8-alpine镜像,将一个Java项目构建为镜像

实现思路如下:

  • ① 新建一个空的目录,然后在目录中新建一个文件,命名为Dockerfile

  • ② 拷贝课前资料提供的docker-demo.jar到这个目录中

  • ③ 编写Dockerfile文件:

    • a )基于java:8-alpine作为基础镜像

    • b )将app.jar拷贝到镜像中

    • c )暴露端口

    • d )编写入口ENTRYPOINT

      内容如下:

FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT java -jar /tmp/app.jar
  • ④ 使用docker build命令构建镜像

  • ⑤ 使用docker run创建容器并运行

小结

小结:

  1. Dockerfile的本质是一个文件,通过指令描述镜像的构建过程

  2. Dockerfile的第一行必须是FROM,从一个基础镜像来构建

  3. 基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine

自定义镜像-Dockerfile相关推荐

  1. 创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作...

    实例解析Docker如何通过commit,Dockerfile两种方式自定义Dcoker镜像,对自定义镜像的pull,push,rmi等常用操作,通过实例创建一个Python数据分析开发环境的Dock ...

  2. 【DockerFile构建自定义镜像实操出现问题解决方案Failed to download metadata for repo ‘appstream‘: IPv4 forwarding disa】

    一.知识回顾 之前的内容都帮你整理好了,在这里哟! [0.Docker相关目录文章整理,可自行查看,包含多节内容] [1.Docker详细安装部署&阿里镜像地址配置] [2.Docker架构& ...

  3. 客快物流大数据项目(十七):自定义镜像mycentos

    目录 自定义镜像mycentos 一.编写Dockerfile 二.构建镜像 三.​​​​​​​运行镜像

  4. 自定义镜像-镜像结构

    Dockerfile自定义镜像 常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了. 而要自定义镜像,就必须先了解镜像的结构才行. 镜像结构 镜像是将应用程序及其需要的系 ...

  5. Web 函数自定义镜像实战:构建图象处理函数

    Web 函数自定义镜像实战:构建图象处理函数 本篇文章写作于 2021.07.23 前言 作为一名前端工程师,我们经常会在 H5, 或者小程序中,使用 Canvas 来处理或生成图片. 不过在有些禁用 ...

  6. 初识Docker:(5)Docker自定义镜像

    初识Docker:(5)Docker自定义镜像 镜像结构 Dockerfile语法 什么是Dockerfile 构建Java项目 案例1:基于ubuntu镜像构建一个新镜像,运行一个java项目 案例 ...

  7. 华为ModelArts自定义镜像(PyTorch镜像)

    一.重要说明 自定义镜像是基于基础镜像制作的,其中根据基础镜像类型的不同,可提供"基础镜像为非ModelArts提供"."基础镜像为ModelArts提供"两种 ...

  8. 自定义镜像上传阿里云(图文教程 附带思维导图)

    自定义镜像上传阿里云 alpine Linux简介 思维导图 使用Dockerfile基于alpine制作JDK8镜像 使用Dockerfile基于alpine制作最小JRE基础镜像 将Docker镜 ...

  9. day2021-11-26(spring docker数据卷,自定义镜像)

    2.3.数据卷(容器数据管理) 在之前的nginx案例中,修改nginx的html页面时,需要进入nginx内部.并且因为没有编辑器,修改文件也很麻烦. 这就是因为容器与数据(容器内文件)耦合带来的后 ...

最新文章

  1. out与ref的区别
  2. jvm性能调优实战 - 36XX:SoftRefLRUPolicyMSPerMB配置引起的Metaspace频繁FullGC
  3. ddr4服务器内存和普通内存_DDR4内存可以在普通电脑上使用吗?有影响吗?
  4. Two Merged Sequences(CF 1144 G)
  5. Python打包分发工具setuptools简介
  6. 一个简单的Makefile模板
  7. Atitit.提升软件稳定性---基于数据库实现的持久化 循环队列 环形队列
  8. 计算机专业英语词汇1500词
  9. 我解决了net framework 4安装失败,提示找不到指定文件的问题
  10. Ubuntu20软件商店无法正确加载,解决办法
  11. 现在进行时和一般现在时的区分_38
  12. shell遍历ip执行特定功能
  13. Flex TLF 相关知识
  14. 搜狗浏览器屏蔽广告插件_搜狗浏览器屏蔽芒果TV视频广告:被判不正当竞争,赔了12万...
  15. Unity SteamVR锁定头盔位置旋转
  16. Win8系统mscomctl.ocx缺失的解决方法 run-time error 339
  17. 也许有一天,你发觉日子特别的艰难,那可能是这次的收获将特别的巨大
  18. 达芬奇发明计算机读后感200,三年级读后感:读《达芬奇》有感200字
  19. Python基础知识学习(六)——包与模块:指令、包加载步骤、搜索范围
  20. 现代密码学导论-2-古典密码及其密码分析

热门文章

  1. 【转】jmeter响应结果乱码问题
  2. django models中批量导入数据
  3. 解决react-native 运行报错:Entry, :CFBundleIdentifier, Does Not Exist
  4. 通过lseek产生空洞文件
  5. 牛客网Java刷题知识点之什么是代码块、普通代码块、静态代码块、同步代码块、构造代码块以及执行顺序...
  6. POPTEST老李分享修改dns ip的vbs代码
  7. 委托、Lambda表达式和事件
  8. 【Java线程】多线程实现简单的一对一聊天
  9. hotmail在outlook2007中的设置
  10. 罗杰斯:做你喜欢的工作,你会变成个有钱人