Docker 专栏 —— Dockerfile 指令详解
文章目录
- ADD 复制文件
- COPY 复制文件
- ARG 设置构建参数
- CMD 容器启动命令
- ENTRYPOINT ⼊⼝点
- ENV 设置环境变量
- EXPOSE 声明暴露的端⼝
- FROM 指定基础镜像
- LABEL 为镜像添加元数据
- MAINTAINER 指定维护者的信息
- RUN 执⾏命令
- USER 设置⽤户
- VOLUME 指定挂载点
- WORKDIR 指定⼯作⽬录
ADD 复制文件
从 src ⽬录复制⽂件到容器的 dest,其中 src 可以是 Dockerfile 所在⽬录的相对路径,可以是⼀个URL,也可以是⼀个压缩包
格式:
- ADD src… dest
- ADD [“src”,… “dest”]
注意:
- src 必须在构建的上下文内,不能使⽤例如: ADD …/somethine /something 这样的命令,因为 docker build 命令⾸先会将上下⽂路径和其⼦⽬录发送到docker daemon
- 如果 src 是一个URL,同时 dest 不以斜杠结尾,dest 将会被视为文件,src 对应的文件内容将会被下载到 dest
- 如果 src 是一个URL,同时 dest 以斜杠结尾,dest 将会被视为目录,src 对应内容将会被下载到 dest 目录
- 如果 src 是一个目录,那么整个目录下的内容将会被拷贝,包括文件系统元数据
- 如果文件是可识别的压缩包格式,则 docker 会自动解压
COPY 复制文件
复制本地端的 src 到容器的 dest。COPY指令和ADD指令类似,COPY不⽀持URL和压缩包
格式:
- COPY src… dest
- COPY [“src”,… “dest”]
ARG 设置构建参数
ARG指令⽤于设置构建参数,类似于ENV。和ARG不同的是,ARG设置的是构建时的环境变量,在容器运⾏时是不会存在这些变量的,例如: ARG user1=someuser
格式:
- ARG name[=default value]
CMD 容器启动命令
CMD指令⽤于为执⾏容器提供默认值。每个Dockerfile只有⼀个CMD命令,如果指定了多个CMD命令,那么只有最后⼀条会被执⾏,
如果启动容器的时候指定了运⾏的命令,则会覆盖掉CMD指定的命令
格式:
- CMD [“executable”,“param1”,“param2”]
- CMD [“param1”,“param2”] (为ENTRYPOINT指令提供预设参数)
- CMD command param1 param2 (在shell中执⾏)
ENTRYPOINT ⼊⼝点
ENTRYPOINT和CMD指令的⽬的⼀样,都是指定Docker容器启动时执⾏的命令,可多次设置,但只有最后⼀个有效。
ENTRYPOINT不可被重写覆盖
格式:
- ENTRYPOINT [“executable”, “param1”, “param2”]
- ENTRYPOINT command param1 param2
ENV 设置环境变量
例如: ENV JAVA_HOME /path/to/java
格式:
- ENV key value
- ENV key=value …
EXPOSE 声明暴露的端⼝
⽤于声明在运⾏时容器提供服务的端⼝
格式:
- EXPOSE port [port…]
注意:
- 这只是⼀个声明,运⾏时并不会因为该声明就打开相应端⼝
- 该指令的作⽤主要是帮助镜像使⽤者理解该镜像服务的守护端⼝
- 当运⾏时使⽤随机映射时,会⾃动映射 EXPOSE 的端⼝
# 声明暴露⼀个端⼝示例
EXPOSE port1
# 相应的运⾏容器使⽤的命令
docker run -p port1 image
# 也可使⽤-P选项启动
docker run -P image
# 声明暴露多个端⼝示例
EXPOSE port1 port2 port3
# 相应的运⾏容器使⽤的命令
docker run -p port1 -p port2 -p port3 image
# 也可指定需要映射到宿主机器上的端⼝号
docker run -p host_port1:port1 -p host_port2:port2 -p host_port3:port3 image
FROM 指定基础镜像
使⽤ FROM 指令指定基础镜像,FROM指令有点像Java⾥⾯的 “extends” 关键字。需要注意的是,FROM指令必须指定且需要写在其他指令之前,FROM指令后的所有指令都依赖于该指令所指定的镜像。
格式:
- FROM image
- FROM image:tag
- FROM image@digest
LABEL 为镜像添加元数据
格式:
- LABEL key=value key=value key=value …
# 使⽤ """和"\"转换命令⾏,示例:
LABEL "com.example.vendor"="ACME Incorporated"
LABEL com.example.label-with-value="foo"
LABEL version="1.0"
LABEL description="This text illustrates \
that label-values can span multiple lines."
MAINTAINER 指定维护者的信息
该指令现已过时,建议适用如下形式:
LABEL maintainer=“dsd2333”
RUN 执⾏命令
- RUN command 在shell终端中运⾏,在 Linux 中默认是
/bin/sh -c
,在 windows 中是cmd /s/c
,使⽤这种格式,就像直接在命令⾏中输⼊命令⼀样。- RUN [“executable”, “param1”,“param2”] 使⽤exec执⾏,这种⽅式类似于函数调⽤。指定其他终端可以通过该⽅式操作,例如: RUN [“/bin/bash”, “-c”, “echo hello”] ,该⽅式必须使⽤双引号["]⽽不能使⽤单引号['],因为该⽅式会被转换成⼀个JSON 数组。
格式:
- RUN command
- RUN [“executable”, “param1”, “param2”]
USER 设置⽤户
该指令⽤于设置启动镜像时的⽤户或者UID,写在该指令后的RUN、CMD以及ENTRYPOINT指令都将使⽤该⽤户执⾏命令
格式:
- USER 用户名
VOLUME 指定挂载点
该指令使容器中的⼀个⽬录具有持久化存储的功能,该⽬录可被容器本身使⽤,也可共享给其他容器。当容器中的应⽤有持久化数据的需求时可以在Dockerfile中使⽤该指令
格式:
- VOLUME [“/data”]
当该Dockerfile被构建成镜像后,/tmp⽬录中的数据即使容器关闭也依然存在。如果另⼀个容器也有持久化的需求,并且想使⽤以上容器/tmp⽬录中的内容,则可使⽤如下命令启动容器:
docker run -volume-from 容器ID 镜像名称 # 第⼀个容器的ID 第⼆个容器所使⽤的镜像
WORKDIR 指定⼯作⽬录
切换⽬录指令,类似于cd命令,写在该指令后的 RUN , CMD 以及 ENTRYPOINT 指令都将该⽬录作为当前⽬录,并执⾏相应的命令
格式:
- WORKDIR /path/to/workdir
相关文章:
Docker 专栏 —— Dockerfile 指令详解
文章目录 ADD 复制文件COPY 复制文件ARG 设置构建参数CMD 容器启动命令ENTRYPOINT ⼊⼝点ENV 设置环境变量EXPOSE 声明暴露的端⼝FROM 指定基础镜像LABEL 为镜像添加元数据MAINTAINER 指定维护者的信息RUN 执⾏命令USER 设置⽤户VOLUME 指定挂载点WORKDIR 指定⼯作⽬录 ADD 复制…...
IntelliJ IDEA 优化设置
针对 Java 开发,IntelliJ IDEA 有许多优化设置,可以帮助提高代码编写、调试、构建和运行的效率。以下是一些针对 Java 开发的优化建议: 1. 增加 JVM 内存和性能优化 增加堆内存: 通过调整 idea.vmoptions 文件,增加 IntelliJ ID…...
git打补丁
1、应用场景 跨仓库升级 开发项目B使用的是开源项目A。开源项目A发现漏洞,作者进行了修复,我们可以通过使用git补丁的方式,将作者修改的内容复制到我 们的项目B中。 2、TortoiseGit方式 源仓库 格式化补丁 根据提交数量,生成…...
开源CMS建站系统的安全优势有哪些?
近年来,用户们用开源CMS系统搭建网站的比例也越来越高,它为用户提供了便捷的网站建设解决方案。其中,亿坊CMS建站系统更因安全方面备受用户欢迎,下面带大家一起全面地了解一下。 一、什么是开源CMS? 开源CMS指的是那…...
【linux系统之redis6】redis的基础命令使用及springboot连接redis
redis的基础命令很多,大部分我们都可以在官网上找到,真的用的时候可以去官网找,不用全部记住这些命令 redis通用的基础命令的使用 代码测试 string类型常见的命令 key值的结构,可以区分不同的需求不同的业务名字 hash类型 创建…...
HDFS异构存储和存储策略
一、HDFS异构存储类型 1.1 冷、热、温、冻数据 通常,公司或者组织总是有相当多的历史数据占用昂贵的存储空间。典型的数据使用模式是新传入的数据被应用程序大量使用,从而该数据被标记为"热"数据。随着时间的推移,存储的数据每周…...
VSCode 使用鼠标滚轮控制字体
一、 文件 | 首选项 | 设置 二、单击在 settings.json中编辑 "editor.mouseWheelZoom": true 注注注意:保存哦!ctrlS 三、测试 按住ctrl鼠标滚轮,控制字体大小...
全面教程:Nacos 2.4.2 启用鉴权与 MySQL 数据存储配置
全面教程:Nacos 2.4.2 启用鉴权与 MySQL 数据存储配置 1. 配置 Nacos 开启鉴权功能 1.1 修改 application.properties 配置文件 在 Nacos 2.4.2 中,开启鉴权功能需要修改 conf/application.properties 文件。按照以下方式配置: # 开启鉴权…...
pycharm-pyspark 环境安装
1、环境准备:java、scala、pyspark、python-anaconda、pycharm vi ~/.bash_profile export SCALA_HOME/Users/xunyongsun/Documents/scala-2.13.0 export PATH P A T H : PATH: PATH:SCALA_HOME/bin export SPARK_HOME/Users/xunyongsun/Documents/spark-3.5.4-bin…...
论文解析 | 基于语言模型的自主代理调查
论文 《A Survey on Large Language Model-based Autonomous Agents》 对基于大型语言模型(LLM)的自主智能体(Autonomous Agents)进行了全面调查。随着大型语言模型(如 GPT 系列、BERT、T5 等)的快速发展&a…...
Jupyter Notebook 安装PyTorch
1、判断当前环境 通过如下命令可以看出是Anaconda 环境 2、Anaconda 环境安装 PyTorch 2.1 要执行的命令 如果你使用的是 Anaconda 环境,可以使用以下命令来安装 PyTorch: conda install pytorch -c pytorch 2.2 执行遇到的问题:没有权…...
计算机网络之---ICMP协议与Ping命令
ICMP 协议 ICMP (Internet Control Message Protocol) 是一种网络层协议,主要用于在 IP 网络中传递控制消息。ICMP 主要用于网络设备之间的故障报告和诊断,帮助设备检测网络连接问题。它是 IP 协议的核心部分之一,用于发送错误消息和操作信息…...
Flutter项目开发模版,开箱即用(Plus版本)
前言 当前案例 Flutter SDK版本:3.22.2 本文,是由这两篇文章 结合产出,所以非常建议大家,先看完这两篇: Flutter项目开发模版: 主要内容:MVVM设计模式及内存泄漏处理,涉及Model、…...
工作效率提升:使用Anaconda Prompt 创建虚拟环境总结
目录 完整顺序命令流程(直接照着改就行)详细步骤解析(想要详细解析的看过来)1. 创建一个用于存储 Conda 环境的目录(可选)2. 创建新的 Conda 虚拟环境并指定路径3. 激活新创建的环境4. 安装 Jupyter Notebo…...
MySQL学习笔记2【函数/约束/多表查询】
MySQL学习笔记 函数 字符串函数 函数功能CONCAT(s1, s2, …, sn)字符串拼接,将s1, s2, …, sn拼接成一个字符串LOWER(str)将字符串全部转为小写UPPER(str)将字符串全部转为大写LPAD(str, n, pad)左填充,用字符串pad对str的左边进行填充,达到…...
Pathview包:整合表达谱数据可视化KEGG通路
Pathview是一个用于整合表达谱数据并用于可视化KEGG通路的一个R包,其会先下载KEGG官网上的通路图,然后整合输入数据对通路图进行再次渲染,从而对KEGG通路图进行一定程度上的个性化处理,并且丰富其信息展示。(KEGG在线数…...
利用 Java 爬虫从 yiwugo 根据 ID 获取商品详情
在当今数字化时代,数据是商业决策的关键。对于从事国际贸易的商家来说,精准获取商品的详细信息至关重要。yiwugo 是一个知名的国际贸易平台,拥有海量的商品数据。通过 Java 爬虫技术,我们可以高效地从 yiwugo 根据商品 ID 获取详细…...
Word 转成pdf及打印的开源方案支持xp
Word转成pdf、打印的方案几乎没有免费开源的方案,现在提供一个通过LibreOffice实现的方案 操作依赖LibreOffice需要安装,点此下载老版本 5.4.7.2是最后一个支持xp的 版本如需xp要请安装此版本 LibreOffice官方介绍 LibreOffice 是一款开放源代码的自…...
2025年第三届“华数杯”国际赛B题解题思路与代码(Matlab版)
问题1:产业关联性分析 在 question1.m 文件中,我们分析了中国主要产业之间的相互关系。以下是代码的详细解读: % 问题1:分析中国主要产业之间的相互关系function question1()% 清空工作区和命令窗口clear;clc;% 设置中文显示set…...
pandas与sql对应关系【帮助sql使用者快速上手pandas】
本页旨在提供一些如何使用pandas执行各种SQL操作的示例,来帮助SQL使用者快速上手使用pandas。 目录 SQL语法一、选择SELECT1、选择2、添加计算列 二、连接JOIN ON1、内连接2、左外连接3、右外连接4、全外连接 三、过滤WHERE1、AND2、OR3、IS NULL4、IS NOT NULL5、B…...
<C++> XlsxWriter写EXCEL
XlsxWriter XlsxWriter是一个用于创建和写入Excel 2007及以上版本(.xlsx文件格式)的C库。以下是对XlsxWriter的详细介绍: 主要功能 文本、数字和公式写入:可以向多个工作表中写入文本、数字和公式。格式设置:支持丰…...
PySpark广播表连接解决数据倾斜的完整案例
使用PySpark解决数据倾斜问题的完整案例,通过广播表连接的方式来优化性能。 准备数据 假设我们有两张表,一张大表 big_table 和一张小表 small_table ,小表将作为广播表。 from pyspark.sql import SparkSession# 初始化SparkSession spar…...
seleniun 自动化程序,python编程 我监控 chrome debug数据后 ,怎么获取控制台的信息呢
python 好的,使用 Python 来监控 Chrome 的调试数据并获取控制台信息,可以使用 websocket-client 库来连接 Chrome 的 WebSocket 接口。以下是一个详细的示例: 1. 安装必要的库 首先,你需要安装 websocket-client 库。可以使用…...
Java Web开发进阶——Spring Boot与Thymeleaf模板引擎
Thymeleaf 是一个现代化的、功能强大的 Java 模板引擎,常用于生成 Web 应用程序的视图。它与 Spring Boot 的集成十分方便,并且提供了丰富的功能,能够帮助开发者实现动态渲染数据、处理表单、页面控制等操作。下面,我们将详细探讨…...
【“软件工程”基础概念学习】
基础和相关概念 英文:Software Engineering 软:物体内部的组织疏松,受外力作用后容易改变形状软件: 计算机系统的组成部分,是指挥计算机进行计算、判断、处理信息的程序系统。通常分为系统软件和应用软件。借指某项活…...
C语言基本知识复习浓缩版:控制语句--分支
选择结构 if语句 if控制语句 #include <stdio.h>int main() { int hour; float money; printf("请输入上网小时数:"); scanf("%d", &hour); if (hour <10) { money 30; }else if (hour >10 && hour <50) { mone…...
Oracle Dataguard(主库为双节点集群)配置详解(1):安装 Oracle11g RAC 双节点集群
Oracle Dataguard(主库为双节点集群)配置详解(1):安装 Oracle11g RAC 双节点集群 目录 Oracle Dataguard(主库为双节点集群)配置详解(1):安装 Oracle11g RAC …...
深度学习知识点:LSTM
文章目录 1.应用现状2.发展历史3.基本结构4.LSTM和RNN的差异 1.应用现状 长短期记忆神经网络(LSTM)是一种特殊的循环神经网络(RNN)。原始的RNN在训练中,随着训练时间的加长以及网络层数的增多,很容易出现梯度爆炸或者梯度消失的问…...
XML通过HTTP POST 请求发送到指定的 API 地址,进行数据回传
代码结构说明 这段代码的主要功能是: 从指定文件夹中读取所有 XML 文件。 将每个 XML 文件的内容通过 HTTP POST 请求发送到指定的 API 地址。 处理服务器的响应,并记录每个文件的处理结果。 using System; using System.IO; using System.Net; usin…...
初学者关于对机器学习的理解
一、机器学习: 1、概念:是指从有限的观测数据中学习(或“猜 测”)出具有一般性的规律,并利用这些规律对未知数据进行预测的方法.机器学 习是人工智能的一个重要分支,并逐渐成为推动人工智能发展的关键因素。 2、使用机器学习模型…...
【源码解析】Java NIO 包中的 ByteBuffer
文章目录 1. 前言2. ByteBuffer 概述3. 属性4. 构造器5. 方法5.1 allocate 分配 Buffer5.2 wrap 映射数组5.3 slice 获取子 ByteBuffer5.4 duplicate 复刻 ByteBuffer5.5 asReadOnlyBuffer 创建只读的 ByteBuffer5.6 get 方法获取字节5.7 put 方法往 ByteBuffer 里面加入字节5.…...
vue video重复视频 设置 srcObject 视频流不占用资源 减少资源浪费
// 直接设置srcObject减少获取视频流:通过 captureStream() 方法从下方视频元素获取视频流。 // 设置 srcObject:将获取到的视频流设置为上方视频的 srcObject 减少资源浪费 // 获取到需要复制到的dom元素 const firstVideoElement proxy.$refs.firs…...
LayaAir3.2来了:性能大幅提升、一键发布安装包、支持WebGPU、3D导航寻路、升级为真正的全平台引擎
前言 LayaAir3的每一个分支版本都是一次较大的提升,在3.1彻底完善了引擎生态结构之后,本次的3.2会重点完善全平台发布相关的种种能力,例如,除原有的安卓与iOS系统外,还支持Windows系统、Linux系统、鸿蒙Next系统&#…...
计算机网络(四)网络层
4.1、网络层概述 简介 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输 这些异构型网络N1~N7如果只是需要各自内部通信,他们只要实现各自的物理层和数据链路层即可 但是如果要将这些异构型网络互连起来,形成一个更大的互…...
时空笔记:CBEngine(微观交通模拟引擎)
CBEngine 是一个微观交通模拟引擎,可以支持城市规模的道路网络交通模拟。CBEngine 能够快速模拟拥有数千个交叉路口和数十万辆车辆的道路网络交通。 以下内容基本翻译自CBEngine — CBLab 1.0.0 documentation 1 模拟演示 1.0 模拟演示结构 config.cfg 定义了 roa…...
Apache Sedona和Spark将geojson瓦片化例子
Apache Sedona很方便读取geojson、ShapeFile、geopackage等文件,提供了很多spark sql函数和rdd算子。下面例子主要用于熟悉spark和sedona的使用。 引入的maven包 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.or…...
5种IO模型
目录 一、认识IO二、5种IO模型三、非阻塞IO代码 一、认识IO 什么是IO? Input(输入)和Output(输出)。 冯诺依曼体系结构中,数据从输入设备拷贝到内存,经过处理后,再从内存拷贝到输出设备。现实情况中,数据并不是那么流…...
ue5 蒙太奇,即上半身动画和下半身组合在一起,并使用。学习b站库得科技
本文核心 正常跑步动画端枪动画跑起来也端枪 正常跑步动画 端枪动画的上半身 跑起来也端枪 三步走: 第一步制作动画蒙太奇和插槽 第二步动画蓝图选择使用上半身动画还是全身动画,将上半身端枪和下半身走路结合 第三步使用动画蒙太奇 1.开始把&a…...
面试题
1、shell 脚本写出检测 /tmp/size.log 文件如果存在显示它的内容,不存在则创建一个文件将创建时间写入。 2、写一个 shel1 脚本,实现批量添加 20个用户,用户名为user01-20,密码为user 后面跟5个随机字符。 3、编写个shel 脚本将/usr/local 目录下大于10M的文件转移到…...
工厂方法模式
工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它提供了一个接口,用于创建对象,但允许子类决定实例化的类是哪一个。这样,工厂方法模式将对象的创建逻辑委托给子类,从而实现了创建…...
web前端学习总结(一)
web前端使用三项技术:html、css、javascript. 一、html:超文本标记语言,用于展示网页的框架。 <html> <head><title> </title></head><body><div> </div> <!--用于布局,占1行 --><span&g…...
【深度学习入门_基础篇】概率论
开坑本部分主要为基础知识复习,新开坑中,学习记录自用。 学习目标: 随机事件与概率、随机变量及其分布、多维随机变量及其分布、大数定律与中心极限定理。 强烈推荐此视频: 概率论_麻省理工公开课 废话不多说,直接…...
SpringMVC根据url校验权限,防止垂直越权
思路是加一个拦截器,对除登录接口的所有请求进行拦截。拦截到请求后,查询当前用户都拥有哪些url的权限(这个需要权限表有url字段),然后与当前请求的url对比,如果相同则说明有权限,否则没有。 首…...
istio-proxy oom问题排查步骤
1. 查看cluster数量 cluster数量太多会导致istio-proxy占用比较大的内存,此时需检查是否dr资源的host设置有配置为* 2. 查看链路数据采样率 若采样率设置过高,在压测时需要很大的内存来维护链路数据。可以调低采样率或增大istio-proxy内存。 检查iop中…...
openstack下如何生成centos9 centos10 和Ubuntu24 镜像
如何生成一个centos 10和centos 9 的镜像1. 下载 对应的版本 wget https://cloud.centos.org/centos/10-stream/x86_64/images/CentOS-Stream-GenericCloud-x86_64-10-latest.x86_64.qcow2 wget https://cloud.centos.org/centos/9-stream/x86_64/images/CentOS-Stream-Gener…...
Yolov8训练方式以及C#中读取yolov8+onnx模型进行目标检测.NET 6.0
目录 首先你要定义v8的模型特征文件 下方是完整的模型编写函数 然后你要在控件窗体中定义应用这些方法以及函数 一、定义你的标签 二、下方是定义模块和坐标的方法 三、画框 完整推理函数代码块 效果展示 完整源码 训练其实和yolov10差不多 因为v10就是在v8的基础上做了优…...
C#中序列化的选择:JSON、XML、二进制与Protobuf详解
C#中序列化的选择:JSON、XML、二进制与Protobuf详解 在C#开发中,序列化是将对象转换为可存储或传输的格式的过程,而反序列化则是将存储或传输的数据重新转换为对象的过程。选择合适的序列化方式对应用程序的性能、可维护性和兼容性至关重要。…...
深入理解 Java 设计模式之策略模式
一、引言 在 Java 编程的世界里,设计模式就如同建筑师手中的蓝图,能够帮助我们构建出更加健壮、灵活且易于维护的代码结构。而策略模式作为一种经典的行为型设计模式,在诸多实际开发场景中都发挥着至关重要的作用。它能够让算法的定义与使用…...
如何快速导出Python包和安装?
pip freeze > requirements.txt导出: 安转 : pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple...
记录一个在增量更新工具类
1. 应用场景 比方说我现在有一个商品,这个商品可以上传图片用来展示,之前已经上传过5张图片 ABCDE,现在其中BC这两张图片不想要了要换成FG,这个时候就可以使用这个工具类进行更新。 在最后一步,可以不管ADE直接只管新增…...