当前位置: 首页 > backend >正文

dockerfile编写入门

dockerfile 入门

  • 前提已经知道常用的docker和linux命令
    如容器的创建,运行, linux的文件命令,会上传文件到linux等等

dockerfile简介

之前我们所使用的镜像都是别人构建好的,但是别人构建好的镜像不一定能满足我们的需求。为了满足我们自己的某一些需求,此时我们就需要构建自己的镜像,怎么构建?使用dockerfile。

dockerfile就是一个文本文件,在这个文本文件中可以使用docker所提供的一些指令来指定我们构建镜像的细节,后面就可以使用这个dockerfile文件来构建自己的镜像。

dockerfile文件内容一般分为4部分:

1、基础镜像信息(必选)

2、维护者信息(可选)

3、镜像操作指令(可选)

4、容器启动时执行的指令(可选)

常用命令

指令用法作用
FROMFROM image_name:tag指定一个构建镜像的基础源镜像,如果本地没有就会从公共库中拉取,没有指定镜像的标签会使用默认的latest标签,可以出现多次,如果需要在一个dockerfile中构建多个镜像。
MAINTAINERMAINTAINER user_name描述镜像的创建者,名称和邮箱
RUNRUN “command” “param1” “param2”用来执行一些命令,可以写多条
ENVENV key value设置容器的环境变量,可以写多条。
ADDADD source_dir/file将宿主机的文件复制到容器内,如果是压缩文件,则复制后自动解压
ENTRYPOINTENTRYPOINT “command” “param1” “param2”用来指定容器启动时所执行的命令

入门案例

需求:使用dockerfile来构建一个包含Jdk17的centos7镜像

分析:

1、基础的镜像的应该选择centos:7 (FROM centos:7)

2、在自己所构建的镜像中需要包含Jdk17,就需要把Jdk17添加到centos:7的基础镜像中

3、为了方便的去使用自己构建的镜像中的Jdk17,就需要去配置环境变量

4、因为Jdk17仅仅是一个开发工具,并不是一个服务进程,因此在启动容器的时候可以不指定任何的执行命令

实现步骤:

1、 准备环境

先下载好linux版本的jdk🔗官网
在这里插入图片描述

将Jdk17的安装包上传到linux服务器
在这里插入图片描述

我们是依赖 centos7镜像创建, 要先拉取centos7的镜像

docker pull centos:7

在这里插入图片描述

2、在Jdk17压缩包所在目录下创建一个dockerfile文件

在这里插入图片描述
内容为

FROM centos:7
RUN mkdir -p /usr/local/java   
ADD jdk-17.0.12_linux-x64_bin.tar.gz /usr/local/java/
ENV JAVA_HOME=/usr/local/java/jdk-17.0.12
ENV PATH=$PATH:$JAVA_HOME/bin

3、使用docker build命令构建镜像

docker build -t <镜像名>:<标签> .
如果你不写标签(如 :1.0),默认就是 :latest。

在这里插入图片描述

4、使用docker images查看镜像构建情况

在这里插入图片描述

5、使用自己所构建的镜像创建容器,测试Jdk17的安装情况

直接交互式运行(-it)就可以, 进入用java命令看看生效不

 docker run -it  --name test01 mycentos-jdk17 /bin/bashjava  -version

在这里插入图片描述

http://www.xdnf.cn/news/5298.html

相关文章:

  • 十六、统一建模语言 UML
  • 16前端项目----交易页
  • QT6 源(90):阅读与注释 LCD显示类 QLCDNumber ,源代码以及属性测试。该类继承于容器框架 QFrame
  • Windows报错:OSError: [WinError 1455] 页面文件太小,无法完成操作的问题
  • Redis能保证数据不丢失吗之RDB
  • 【Web】使用Vue3开发鸿蒙的HelloWorld!
  • 模拟太阳系(C#编写的maui跨平台项目源码)
  • Autoware message_filters::Synchronizer链接错误问题
  • Axure疑难杂症:统计分析页面引入Echarts示例动态效果
  • 目录粘滞位的使用
  • JDBC链接数据库
  • 【typenum】 0 配置文件(Cargo.toml)
  • 【MySQL】事务(重点)
  • 酒店洗护用品那些事儿:品牌选择及扬州卓韵用品介绍
  • 6. 存储池配置与CephFS创建 ceph version 14.2.22
  • muduo源码解析
  • 【第33节 数据库基础概念】
  • 游戏引擎学习第269天:清理菜单绘制
  • [模型选择与调优]机器学习-part4
  • PyTorch API 6 - 编译、fft、fx、函数转换、调试、符号追踪
  • HTTP 请求中 Content-Type 头部
  • 使用谱聚类将相似度矩阵分为2类
  • 2025年RAG技术有哪些创新点?
  • 海市蜃楼的形成原理
  • M0的基础篇之PWM学习
  • adb命令查询不到设备?
  • 第二个简单的SpringBoot和Vue前后端全栈的todoapp案例
  • 告别“感觉良好”:深入RAG评估,从方法、工具到指标的全方位指南
  • Telnetlib三种异常处理方案
  • ROM详解