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

Dockerfile常用指令详解

Dockerfile 是一个用于定义 Docker 镜像构建过程的脚本文件,其中包含了一系列指令,用于指定如何构建和配置镜像。以下是一些常用的 Dockerfile 指令及其示例用法:

1. FROM

指定基础镜像,Dockerfile 必须以该指令开始。

示例:

FROM ubuntu:20.04

这行表示以 Ubuntu 20.04 作为基础镜像。

2. RUN

执行命令行指令,通常用于安装软件包或进行系统配置。

示例:

RUN apt-get update && apt-get install -y curl

这行表示在镜像中更新包列表并安装 curl

3. COPY

将文件或目录从构建上下文复制到镜像中。

示例:

COPY ./myapp /app

这行表示将当前目录下的 myapp 文件夹复制到镜像中的 /app 目录。

4. ADD

类似于 COPY,但支持自动解压 tar 文件并且可以从 URL 直接下载文件。

示例:

ADD myapp.tar.gz /app

5. WORKDIR

设置工作目录,此后的命令将在该目录下执行。

示例:

WORKDIR /app

这行表示设置 /app 为工作目录。

6. CMD

指定容器启动时执行的命令。Dockerfile 中只能有一个 CMD,多个会被覆盖。

示例:

CMD ["python", "app.py"]

这行表示容器启动时执行 python app.py 命令。

7. ENTRYPOINT

类似于 CMD,但通常用于定义一个固定的命令,CMD 的参数会被附加到 ENTRYPOINT 的后面。

示例:

ENTRYPOINT ["python"]
CMD ["app.py"]

这行表示容器启动时执行 python app.py,用户运行容器时提供的参数会附加在 python 命令后面。

8. ENV

设置环境变量,构建时和运行时都可以使用。

示例:

ENV APP_HOME /app

这行表示设置环境变量 APP_HOME/app

9. EXPOSE

声明容器暴露的端口,通常用于文档目的。

示例:

EXPOSE 8080

这行表示容器将暴露 8080 端口。

10. VOLUME

创建一个挂载点,指定将来容器运行时可以将宿主机目录挂载到该点。

示例:

VOLUME /data

这行表示在 /data 目录创建一个挂载点。

11. USER

指定运行后续命令的用户,默认为 root。

示例:

USER nobody

这行表示之后的命令将以 nobody 用户运行。

12. ARG

定义构建时的参数,可以在构建时通过 --build-arg 传递值。

示例:

ARG VERSION=1.0
RUN echo "Building version $VERSION"

这行表示定义了构建时的参数 VERSION,并在运行命令时使用它。

13. LABEL

添加元数据到镜像中,通常用于描述镜像信息。

示例:

LABEL maintainer="yourname@example.com"

这行表示为镜像添加了维护者信息。

14. HEALTHCHECK

指定容器的健康检查命令,以便 Docker 可以定期检查容器是否正常工作。

示例:

HEALTHCHECK CMD curl --fail http://localhost:8080/ || exit 1

这行表示每次运行 curl 命令检查服务状态,失败则认为容器不健康。

15. SHELL

指定后续 RUN 指令使用的 shell,默认是 /bin/sh -c

示例:

SHELL ["/bin/bash", "-c"]

这行表示后续的 RUN 指令将使用 bash 来执行。

这些指令可以组合使用,定义出一个功能强大的 Dockerfile,帮助你构建所需的 Docker 镜像。

相关文章:

Dockerfile常用指令详解

Dockerfile 是一个用于定义 Docker 镜像构建过程的脚本文件,其中包含了一系列指令,用于指定如何构建和配置镜像。以下是一些常用的 Dockerfile 指令及其示例用法: 1. FROM 指定基础镜像,Dockerfile 必须以该指令开始。 示例&am…...

【vue】浏览器兼容相关

Vue.js 是一个流行的前端 JavaScript 框架,它支持构建单页应用和复杂的用户界面。Vue.js 的核心库本身对浏览器的支持情况如下: Vue.js 2.x 最低支持版本:IE9 及以上版本。特性支持:ES5。兼容性:Vue 2.x 在发布时就考…...

【区块链+金融服务】基于区块链的区域股权金融综合服务平台 | FISCO BCOS应用案例

区域性股权市场是我国资本市场的重要组成部分,是多层次资本市场体系的基石。区块链技术与区域性股权市场 分散特征天然匹配,从新型金融基础设施层面为场外参与各方提供公共的可信服务,以技术手段完善市场基础条 件,弥补区域性短板…...

string字符串和json对象相互转换问题

//响应体String responseStr EntityUtils.toString(response.getEntity());log.debug("下单响应码:{},响应体:{}",statusCode,responseStr);if(statusCode HttpStatus.OK.value()){JSONObject jsonObject JSONObject.parseObject(responseStr);if(jsonObject.cont…...

【生成式人工智能-十一一个不修改模型就能加速语言模型生成的方法】

一个加速语言模型生成的方法 现在语言模型的一个弊端speculative decoding预言家预测的问题 speculative decoding 模块的实现方法NAT Non-autoregressive模型压缩使用搜索引擎 一些更复杂些的speculative decoding 实现方式 speculative decoding 是一个适用于目前生成模型的加…...

Rust 错误处理

Rust 错误处理 Rust 是一种系统编程语言,以其内存安全、高并发和实用性而著称。在 Rust 中,错误处理是一个核心概念,它通过提供 Result 和 Option 类型来鼓励开发者显式地处理可能出现的错误,而不是依赖异常机制。本文将深入探讨 Rust 中的错误处理机制,包括 Result 和 O…...

程序与进程 linux系统

程序与进程 程序 ( program ): 通常为 binary program ,放置在储存媒体中(如硬盘、光盘、软盘、磁带等), 为实体文件的型态存在;二进制文件,比如静态 /bin/date…...

使用MongoDB构建AI:Story Tools Studio将生成式AI引入Myth Maker AI游戏

Story Tools Studio利用先进的生成式AI技术,打造沉浸式、个性化、无穷尽的情景体验。 Story Tools Studio创始人兼首席执行官Roy Altman表示:“我们的旗舰游戏Myth Maker AI采用的是我们自主研发的、以AI为驱动的专家指导型故事生成器MUSE,它…...

鸿蒙UIAbility组件概述(二)

鸿蒙UIAbility组件概述 UIAbility组件基本用法指定UIAbility的启动页面获取UIAbility的上下文信息 UIAbility组件与UI的数据同步使用EventHub进行数据通信使用AppStorage/LocalStorage进行数据同步 UIAbility组件间交互(设备内)启动应用内的UIAbility启动…...

Oracle(70)如何优化SQL查询?

优化SQL查询是数据库管理的重要部分,旨在提高查询性能,减少响应时间和资源消耗。以下是一些常见的SQL查询优化技术,结合代码示例详细说明。 1. 使用索引 索引是优化查询性能的最常见方法之一。索引可以显著减少数据检索的时间。 示例 假设…...

深度剖析:Jenkins构建任务无法中断的原因及解决方案

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…...

【YOLO】常用脚本

目录 VOC转YOLO划分训练集、测试集与验证集 VOC转YOLO import os import xml.etree.ElementTree as ETdef convert(size, box):dw 1. / size[0]dh 1. / size[1]x (box[0] box[1]) / 2.0y (box[2] box[3]) / 2.0w box[1] - box[0]h box[3] - box[2]x x * dww w * dwy…...

Springboot IOC DI理解及实现+JUnit的引入+参数配置

一、JavaConfig 我们通常使用 Spring 都会使用 XML 配置,随着功能以及业务逻辑的日益复杂,应用伴随着大量的 XML 配置文件以及复杂的 bean 依赖关系,使用起来很不方便。 在 Spring 3.0 开始,Spring 官方就已经开始推荐使用 Java…...

CeresPCL 最小二乘插值(曲线拟合)

一、简介 在多项式插值时,当数据点个数较多时,插值会导致多项式曲线阶数过高,带来不稳定因素。因此我们可以通过固定幂基函数的最高次数 m(m < n),来对我们要拟合的曲线进行降阶。之前的函数形式就可以变为: 既然是最小二乘问题,那么就仍然可以使用Ceres来进行求解。 …...

【TCP/IP】自定义应用层协议,常见端口号

互联网中&#xff0c;主流的是 TCP/IP 五层协议 5G/4G 上网&#xff0c;是有自己的协议栈&#xff0c;要比 TCP/IP 更复杂&#xff08;能够把 TCP/IP 的一部分内容给包含进去了&#xff09; 应用层 可以代表我们所编写的应用程序&#xff0c;只要应用程序里面用到了网络通信…...

Frida 的下载和安装

首先要安装好 python 环境 安装 frida 和 工具包 pip install frida frida-tools 查看版本&#xff1a; frida --version 16.4.8 然后到 github 上下载对应 server &#xff08; 和frida 的版本一致 16.4.8&#xff09; Releases frida/frida (github.com) 查看手机或…...

后端开发刷题 | 链表内指定区间反转【链表篇】

描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转&#xff0c;要求时间复杂度 O(n)O(n)&#xff0c;空间复杂度 O(1)O(1)。 例如&#xff1a; 给出的链表为 1→2→3→4→5→NULL1→2→3→4→5→NULL, m2,n4 返回 1→4→3→2→5→NULL 数据范围&#xff1a; 链表…...

【NVMe系列-提问页与文章总结页面】

NVMe系列-提问页与文章总结页面 问题汇总NVMe协议是什么&#xff1f;PRP 与 PRP List是做什么的&#xff1f; 已写文章汇总 问题汇总 NVMe协议是什么&#xff1f; PRP 与 PRP List是做什么的&#xff1f; 已写文章汇总...

用生成器函数生成表单各字段

生成器函数生成表单字段是非常合适的用法,避免你要用纯javascript做后台时频繁的制作表单&#xff0c;而不能重复利用 //这里是javascript部分&#xff0c;formfiled.js //生成器函数对字段的处理&#xff0c;让各字段name\className\label\value\placeholder赋值到input的属性…...

【xilinx】O-RAN 无线电接口 - Vivado 2020.1 及更新工具版本的发行说明

描述 记录包含 O-RAN 无线电接口 LogiCORE IP 的发行说明和已知问题&#xff0c;包括以下内容&#xff1a; 一般信息已知和已解决的问题 解决方案 一般信息 可以在以下三个位置找到支持的设备&#xff1a; O-RAN 无线电接口 IP 产品指南&#xff08;需要访问O-RAN 安全站点&…...

FreeRTOS定时器那些坑:调试3天发现的优先级配置与内存泄漏问题

FreeRTOS定时器实战避坑指南&#xff1a;从优先级陷阱到内存泄漏的深度解析 凌晨三点的调试灯依然亮着&#xff0c;逻辑分析仪屏幕上跳动的波形似乎在嘲弄我的无知——这已经是连续第三天被FreeRTOS定时器"教做人"了。从优先级配置失误导致系统卡死&#xff0c;到内存…...

摆脱论文困扰!2026年实打实好用的专业降AI率平台

2026年论文降AI率工具已从“基础改写”升级为智能优化系统&#xff0c;核心评价维度包括AIGC识别精准度、文本自然度、学术格式合规性、查重适配能力、长文本逻辑性和多语种支持。本次测评覆盖6款主流工具&#xff0c;涵盖中文与英文、全流程与专项功能、免费与付费模式&#x…...

终极指南:LitmusChaos从混沌测试到智能韧性工程的完整演进路径

终极指南&#xff1a;LitmusChaos从混沌测试到智能韧性工程的完整演进路径 【免费下载链接】litmus 一个用于Kubernetes的云原生Chaos Engineering框架&#xff0c;用于测试系统的健壮性和弹性。 - 功能&#xff1a;Chaos Engineering&#xff1b;系统测试&#xff1b;Kubernet…...

Session 的默认失效时间是多长?如何配置和修改?

Session 的默认失效时间是多久&#xff1f;如何配置和修改&#xff1f;1. 引言&#xff1a;停车场的“免费停车券”2. 前置知识&#xff1a;Session 是什么&#xff1f;它为什么需要“失效”&#xff1f;3. 默认失效时间是多少&#xff1f;4. Session 超时的工作原理5. 如何配置…...

PageHelper与民航电子数据库兼容性实战:从报错到完美分页的完整流程

PageHelper与民航电子数据库兼容性实战&#xff1a;从报错到完美分页的完整流程 最近在将PageHelper分页插件接入民航电子数据库时&#xff0c;遇到了一个典型的兼容性问题。当代码执行到PageHelper.startPage()方法时&#xff0c;控制台抛出com.github.pagehelper.PageExcepti…...

老旧Mac升级指南:OpenCore Legacy Patcher实现Monterey系统适配

老旧Mac升级指南&#xff1a;OpenCore Legacy Patcher实现Monterey系统适配 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着macOS系统不断迭代&#xff0c;许多经典Ma…...

Windows系统信息导出全攻略:从msinfo32生成报告到用PowerShell定制你的专属硬件清单

Windows系统信息自动化采集与定制化报告实战指南 对于IT资产管理专员和技术团队而言&#xff0c;准确获取终端设备的硬件配置信息是软件许可合规、资产盘点和故障排查的基础工作。传统的手动记录方式效率低下且容易出错&#xff0c;而Windows内置的msinfo32工具生成的报告又过于…...

PX4 OFFBOARD模式实战:手把手教你用C++代码让无人机自主起飞(附心跳包避坑指南)

PX4 OFFBOARD模式深度实战&#xff1a;从心跳包机制到三维轨迹控制的完整实现 当你的无人机在OFFBOARD模式下突然失控坠落&#xff0c;或者莫名其妙地退出自主控制模式时&#xff0c;是否曾怀疑过自己的代码逻辑&#xff1f;这些问题往往源于对PX4底层通信机制理解不够深入。本…...

规则直观落地操作指南(零理解成本・照做就生效・效果肉眼可见)

规则直观落地操作指南(零理解成本・照做就生效・效果肉眼可见) 核心原则:所有内容全是「动作指令」,无概念、无术语、无废话;每一步操作都有「即时可验证的落地效果」,不用等项目结束,做完立刻知道有没有用。 一、先锁死 3 条零理解成本操作铁律(必须先遵守,否则所有…...

Python异步编程:非科班转码者的指南

Python异步编程&#xff1a;非科班转码者的指南 前言 大家好&#xff0c;我是第一程序员&#xff08;名字大&#xff0c;人很菜&#xff09;。作为一个非科班转码、正在学习Rust和Python的萌新&#xff0c;我最近开始接触异步编程。异步编程是一种处理并发操作的方法&#xff0…...