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

docker构建镜像命令

编写dockerfile文件

例子1;

FROM oraclelinux:7-slim
ENV release=19 
ENV update=13
RUN  curl -o /etc/yum.repos.d/public-yum-ol7.repo https://yum.oracle.com/public-yum-ol7.repo && \yum-config-manager --enable ol7_oracle_instantclient && \yum install -y java-1.8.0-openjdk-devel.x86_64 && \yum -y install oracle-instantclient${release}.${update}-basic oracle-instantclient${release}.${update}-devel oracle-instantclient${release}.${update}-sqlplus && \rm -rf /var/cache/yum && \echo /usr/lib/oracle/${release}.${update}/client64/lib > /etc/ld.so.conf.d/oracle-instantclient${release}.${update}.conf && \ldconfig
#install sqlhc
RUN mkdir -p /root/shell
COPY sqlhc.sh /root/shell/ 
COPY sqlhc.sql /root/shell/ 
RUN chmod +x /root/shell/sqlhc.sh#PDF
RUN mkdir -p /root/pdf
COPY asmChart.jasper /root/pdf/  
COPY asmInfo.jasper /root/pdf/  
COPY dataBaseTableSpaceInfo.jasper /root/pdf/  
COPY indexUseAs.jasper /root/pdf/  
COPY main.jasper /root/pdf/  
COPY objectFragmentsInfo.jasper /root/pdf/  
COPY topObjectInfo.jasper /root/pdf/ 
COPY dbSpaceChart.jasper /root/pdf/ 
RUN chmod -R 777  /root/pdf#install java deployment envirement
ENV JAVA_BASE=/usr/java
RUN mkdir -p $JAVA_BASE
ADD jre-8u331-linux-x64.tar.gz $JAVA_BASE
#RUN chown -R root:root $JAVA_BASE/jre1.8.0_331
RUN ln -s $JAVA_BASE/jre1.8.0_331 $JAVA_BASE/jdk-8
ENV JAVA_HOME=$JAVA_BASE/jdk-8#timezone setting
ENV TimeZone=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezoneENV PATH=$PATH:/usr/lib/oracle/${release}.${update}/client64/bin:$JAVA_HOME/bin

命令解读

  • From 用于指定基础镜像,后续的指令都基于这个基础镜像进行构建。
 From 镜像名称
# 基于 oraclelinux:7-slim 来构建新的镜像
FROM oraclelinux:7-slim#或者基于openjdk:11来构建
FROM openjdk:11
  • ENV命令,在 Dockerfile 中,ENV 命令用于设置环境变量。这些环境变量可以在后续的构建步骤(即后续的 RUN 命令)以及容器运行时中使用。在使用的时候 可以使用 $符 加变量名称
#ENV 命令的基本语法如下:
ENV <key>=<value> ...
  • RUN命令,用来执行在linux中的命令,比如赋权,或者安装命令,下载之类的
# 例如给文件夹增加下的文件增加读写权限
RUN chmod -R 777  /root/pdf
#下载文件的命令
RUN yum install -y java-1.8.0-openjdk-devel.x86_64
# 换行符 和 \
可以使用换行符  和 \  来跨行编写命令
# &&  符号,表示必须 && 前的命令执行成功后才会执行后面的命令,如果前面失败了后面不会执行
  • COPY,表示复制
# copy 宿主机文件路径  镜像内路径
# 复制文件
COPY sqlhc.sh /root/shell/ 
COPY asmChart.jasper /root/pdf/ 
  • ADD,在 Dockerfile 中,ADD 命令用于将本地文件、目录或远程文件 URL 添加到镜像的文件系统中。ADD 命令非常强大,因为它可以自动解压归档文件(如 tar、gzip、bzip2 等)到镜像中。
# ADD <src> <dest>
# <src>:要添加的源文件或目录的路径,或者远程文件的 URL。
# <dest>:目标路径在 Docker 镜像中的位置# 将tar包,复制并解压到 $JAVA_BASE这个所代表的路径中
ADD jre-8u331-linux-x64.tar.gz $JAVA_BASE
# 将当前上下文中的 myfile.txt 文件添加到镜像的 /app/ 目录下:
ADD myfile.txt /app/
#将当前上下文中的 mydir/ 目录(包括其内容)添加到镜像的 /app/ 目录下
ADD mydir/ /app/
#从远程 URL 添加一个文件到镜像中:
ADD https://example.com/myfile.txt /app/

例子2

FROM nginx:1.23 
ARG APP_BIN=/usr/share/nginx/html
COPY default.conf /etc/nginx/conf.d/ 
COPY bin/ $APP_BIN
EXPOSE 80
  • ARG 定义可以在构建时传递的变量
#使用ARG命令 定义一个名为 APP_BIN变量
ARG APP_BIN=/usr/share/nginx/html
# 将当前目录下,bin目录下的文件 复制到 APP_BIN变量所代表的路径下
COPY bin/ $APP_BIN

ARG和ENV命令在Dockerfile中各自扮演着不同的角色,它们的主要差别如下:

  1. 定义阶段和存在时间:
    ARG命令主要用于在构建镜像的过程中设置一个构建时的环境变量。这些变量在构建过程中可以被使用,并且可以在Dockerfile中通过引用它们的名称来访问。然而,一旦镜像编译成功,ARG指定的变量将不再存在。
    ENV命令则用于在容器运行时设置环境变量。这些变量在容器启动时被设置,并且可以在容器中的应用程序中使用。与ARG不同,ENV设置的环境变量在镜像构建完成后会保留在镜像中,因此当使用构建后的镜像运行容器时,这些环境变量仍然保持不变。
  2. 使用方式和语法:
    ARG命令的格式为ARG [=]。在执行docker build时,可以通过–build-arg <参数名>=<值>来为声明的变量赋值。此外,ARG还可以引用Docker内置的一些镜像创建变量,这些变量无需用户声明即可直接使用。
    ENV命令的语法允许直接设置一个或多个环境变量,如ENV MY_NAME=“John Doe” MY_DOG=Rex。它支持在指令中设置多个环境变量,并且环境变量的值可以被其他环境变量引用。
  3. 功能和用途:
    ARG主要用于在构建过程中传递参数或设置构建时的环境,但这些变量并不会被保留到最终的镜像中。它们主要在Dockerfile的构建阶段提供灵活性和可配置性。
    ENV则更关注于容器运行时的环境配置。通过设置环境变量,它可以影响容器内部应用程序的行为或配置。
    总结来说,ARG和ENV在Dockerfile中各有其特定的使用场景和功能。ARG主要用于构建时的参数传递和环境设置,而ENV则关注于容器运行时的环境配置。在构建Docker镜像时,应根据具体需求选择使用合适的命令。
  • EXPOSE,暴露端口,EXPOSE 命令在 Dockerfile 中用于声明容器在运行时应该监听的端口。这个命令并不实际地映射或公开任何端口到宿主机,而是作为一个元数据,告诉 Docker 容器哪些网络端口会被应用程序使用。
EXPOSE 80

例子三
基于jdk11镜像构建新的镜像

FROM openjdk:11
COPY 5gSports-app.jar /
COPY ./hikliblinux64 /lib/hik/hikliblinux64
ENTRYPOINT ["java","-jar","/5gSports-app.jar","--spring.config.location=classpath:/product.yml"]
  • ENTRYPOINT 命令,配置容器启动时运行的命令。与 CMD 类似,但 ENTRYPOINT 的命令不会被 docker run 命令行参数指定的指令所覆盖,而是将这些参数当作参数传给 ENTRYPOINT 指定的命令。

ENTRYPOINT 指令应该是一个 JSON 数组,其中每个元素都是一个独立的字符串,而不是一个包含整个命令和参数的单一字符串。
正确的方式是将命令和每个参数分开成数组中的不同元素

ENTRYPOINT ["java","-jar","/5gSports-app.jar","--spring.config.location=classpath:/product.yml"]

这样,java 是命令,-jar 和 5gSports-app.jar 是传递给 java 命令的参数,–spring.config.location=classpath:/product.yml 也是另一个参数。每个参数都作为一个独立的数组元素。

相关文章:

docker构建镜像命令

编写dockerfile文件 例子1; FROM oraclelinux:7-slim ENV release19 ENV update13 RUN curl -o /etc/yum.repos.d/public-yum-ol7.repo https://yum.oracle.com/public-yum-ol7.repo && \yum-config-manager --enable ol7_oracle_instantclient && \yum in…...

每日一题——LeetCode1720.解码异或后的数组

方法一 异或运算的性质 encoded[i−1]arr[i−1]⊕arr[i] 在等式两边同时异或arr[i−1] 由于&#xff1a; 一个数异或它自己&#xff0c;结果总是0。 0异或任何数&#xff0c;结果都是那个数本身。 所以等式可以转化为&#xff1a; arr[i]arr[i−1]⊕encoded[i−1] 由于 a…...

Day47:WEB攻防-PHP应用文件上传函数缺陷条件竞争二次渲染黑白名单JS绕过

目录 文件上传与测试环境安装 1、前端 JS 2、.htaccess(apache独有的配置文件) 3、MIME类型 4、文件头判断 5、黑名单-过滤不严 6、黑名单-过滤不严 7、低版本GET-%00截断 8、低版本POST-%00截断 9、黑名单-过滤不严 10、逻辑不严-条件竞争 11、二次渲染 12、函数…...

【Android】美团组件化路由框架WMRouter源码解析

前言 Android无论App开发还是SDK开发&#xff0c;都绕不开组件化&#xff0c;组件化要解决的最大的问题就是组件之间的通信&#xff0c;即路由框架。国内使用最多的两个路由框架一个是阿里的ARouter&#xff0c;另一个是美团的WMRouter。这两个路由框架功能都很强大&#xff0…...

python知识点总结(九)

python知识点总结九 1、TCP中socket的实现代码实现TCP协议a、服务端b、客户端&#xff1a; 2、写装饰器&#xff0c;限制函数被执行的频率&#xff0c;如10秒一次3、请实现一个装饰器&#xff0c;通过一次调用函数重复执行5次4、写一个登录装饰器对一下函数进行装饰&#xff0c…...

浅谈Linux中的软锁定(soft lockup)和硬件监视器(watchdog)

目录 1. 问题所示2. 基本知识3. 进阶知识 1. 问题所示 跑深度学习的时候遇到卡顿卡机 hostname kernel:watchdog BUG:soft lockup - CPU#16 stuck for 130s![P2PMain-72:4030570]界面如下所示&#xff1a; 大概意思是&#xff1a; watchdog_thresh参数是硬件监视器的超时阈值…...

数据库的四个特性?MySQL是如何实现的?

首先MySQL中&#xff0c;数据库的四个特性分为&#xff1a; 原子性一致性隔离性持久性 也就是我们常说的ACID。 那么这四个特性数据库是如何实现的呢&#xff1f; 持久性---> redo log&#xff1a; redo log&#xff08;重做日志&#xff09;&#xff1a; redolog本身是…...

Jupyter R绘图 汉字显示乱码的解决办法

1.Jupyte中&#xff0c;R绘图&#xff0c;汉字显示乱码 2.如何解决&#xff1f; (1)R中安装showtext 登录linux服务器 #R > install.packages(“showtext”) … 出错 (2)退出R,安装freetype-config #apt install libfreetype6-dev 出错 &#xff08;3&#xff09;进入R&…...

推荐几个值得一读的Qt开源项目

VNote - 基于Qt的免费开源笔记软件&#xff0c;适合那些寻找跨平台笔记解决方案的用户。项目地址&#xff1a;https://github.com/vnotex/vnote Qt NodeEditor - 类似于UE4蓝图的节点编辑器&#xff0c;对于想要深入了解Qt图形编辑和节点系统的人来说&#xff0c;这是一个极好…...

【XR806开发板试用】使用PWM模块模拟手机呼吸灯提示功能

一般情况下&#xff0c;我们的手机在息屏状态&#xff0c;当收到消息处于未读状态时&#xff0c;会有呼吸灯提醒&#xff0c;这次有幸抽中XR806开发板的试用&#xff0c;经过九牛二虎之力终于将环境搞好了&#xff0c;中间遇到各种问题&#xff0c;在我的另一篇文章中已详细描述…...

Mysql——索引下推

MySQL的索引下推&#xff08;Index Condition Pushdown, ICP&#xff09;是一种查询优化技术&#xff0c;它允许MySQL在存储引擎层执行部分WHERE子句中的过滤条件&#xff0c;而非全部在MySQL服务器层执行。这使得在扫描索引过程中就可以剔除不满足条件的记录&#xff0c;从而减…...

Springboot项目之mybatis-plus多容器分布式部署id重复问题之源码解析

mybatis-plus 3.3.2 部署多个pod id冲突问题 配置&#xff1a; # 设置随机 mybatis-plus.global-config.worker-id: ${random.int(1,31)} mybatis-plus.global-config.datacenter-id: ${random.int(1,31)}源码解析&#xff1a;MybatisSqlSessionFactoryBean 重点&#xff1a…...

微信答题小程序云开发--实现云函数上传题目图片 base64功能

需求功能 题目带有图片&#xff0c;需要支持上传图片功能。微信答题小程序云开发&#xff0c;实现云函数上传题目图片、存储功能、查询显示等功能。 云函数开发遇到的问题 在微信云开发环境当中&#xff0c;普通的用户并没有往云存储内写入文件的权限。 所以普通用户想要使用…...

学会Sass的高级用法,减少样式冗余

在当今的前端开发领域&#xff0c;样式表语言的进步已经显著提升了代码组织性和可维护性。Sass&#xff08;Syntactically Awesome Style Sheets&#xff09;作为CSS预处理器的翘楚&#xff0c;以其强大的变量、嵌套规则、混合宏&#xff08;mixin&#xff09;、循环和函数等高…...

【Java初阶(五)】类和对象

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; 目录 1. 前言2.面向对象的认识3.类的认识4. 类的实例化4.1什么是实例化4.2类和对象的说明 5.this引用6.对象初始化6.1 构造方法 7.static关键字8.代码块8.1 …...

AWTK-MODBUS 服务器

AWTK-MODBUS 服务器 1. 介绍 AWTK-MODBUS 提供了一个简单的 MODBUS 服务器&#xff0c;可以通过配置文件来定义寄存器和位的数量和初始值。 启动方法&#xff1a; bin/modbus_server_ex config/default.json2. 配置文件 配置文件使用JSON格式。 url: 连接地址auto_inc_in…...

JavaScript快速入门笔记之一(基本概念)

JavaScript快速入门笔记之一&#xff08;基本概念&#xff09; 前端三大语言&#xff1a; HTML&#xff1a;专门编写网页内容的语言CSS&#xff1a;专门美化网页样式的语言JavaScript&#xff1a;专门编写网页交互的语言 名词解释&#xff1a; 交互&#xff1a;输入数据&#…...

前端学习之css基本网格布局

网格布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>网格布局</title><style>.a{/* grid网格布局 */display: grid;width: 400px;height: 400px;border: 1px solid red;/* 设置当前…...

[网鼎杯2018]Unfinish 两种方法 -----不会编程的崽

网鼎杯太喜欢搞二次注入了吧。上次是无列名盲注&#xff0c;这次又是二次注入盲注。。。不知道方法还是挺难的。哎&#xff0c;网鼎嘛&#xff0c;能理解透彻就很强了。能自己做出来那可太nb了。 又是熟悉的登录框。不知道这是第几次看见网鼎杯的登录框了。后台扫描一下&#x…...

安防监控视频汇聚平台EasyCVR在银河麒麟V10系统中的启动异常及解决方法

安防监控视频平台EasyCVR具备较强的兼容性&#xff0c;它可以支持国标GB28181、RTSP/Onvif、RTMP&#xff0c;以及厂家的私有协议与SDK&#xff0c;如&#xff1a;海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云sdk、乐橙sdk等。平台兼容性强&#xff0c;支持Windows系…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

CSS3相关知识点

CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...

Python学习(8) ----- Python的类与对象

Python 中的类&#xff08;Class&#xff09;与对象&#xff08;Object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心。我们可以通过“类是模板&#xff0c;对象是实例”来理解它们的关系。 &#x1f9f1; 一句话理解&#xff1a; 类就像“图纸”&#xff0c;对…...

FOPLP vs CoWoS

以下是 FOPLP&#xff08;Fan-out panel-level packaging 扇出型面板级封装&#xff09;与 CoWoS&#xff08;Chip on Wafer on Substrate&#xff09;两种先进封装技术的详细对比分析&#xff0c;涵盖技术原理、性能、成本、应用场景及市场趋势等维度&#xff1a; 一、技术原…...

Pandas 可视化集成:数据科学家的高效绘图指南

为什么选择 Pandas 进行数据可视化&#xff1f; 在数据科学和分析领域&#xff0c;可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具&#xff0c;如 Matplotlib、Seaborn、Plotly 等&#xff0c;但 Pandas 内置的可视化功能因其与数据结…...