Dockerfile常用指令介绍

Dockerfile常用指令介绍

Dockerfile是一个文本文件,用于定义Docker镜像的构建过程。下面介绍一些最常用的Dockerfile指令及其用法:

基础指令
  1. FROM - 指定基础镜像

    FROM python:3.9-slim
    

    这是Dockerfile的第一个指令,用于指定构建镜像的基础镜像。

  2. MAINTAINER (已弃用) / LABEL - 设置镜像元数据

    LABEL maintainer="yourname@example.com"
    

    用于添加镜像的作者或其他元数据信息。

  3. RUN - 在镜像中执行命令

    RUN apt-get update && apt-get install -y python3-dev
    

    用于在构建镜像时执行命令,通常用于安装软件包。

  4. COPY - 复制文件到镜像

    COPY ./app /app
    

    第一个参数是源路径,表示要复制的文件或目录
    第二个参数是目标路径(destination path),表示文件将被复制到镜像中的位置
    从构建上下文复制文件或目录到镜像中。

  5. ADD - 更高级的复制指令

    ADD ./app.tar.gz /app
    

    类似于COPY,但可以处理远程URL和自动解压压缩文件。

环境配置
  1. ENV - 设置环境变量

    ENV PYTHONUNBUFFERED 1
    

    为镜像设置环境变量,这些变量在容器运行时也会存在。

  2. WORKDIR - 设置工作目录

    WORKDIR /app
    

    设置RUN、CMD、ENTRYPOINT、COPY和ADD命令的工作目录。

容器运行时配置
  1. CMD - 设置容器启动时默认执行的命令
    CMD ["python", "app.py"]
    

每个 Dockerfile 只能有一个 CMD 指令
如果指定多个,只有最后一个会生效
可以被 docker run 命令后的参数覆盖

  1. ENTRYPOINT - 设置容器入口点

    ENTRYPOINT ["python", "app.py"]
    CMD ["--help"]
    

    设置容器启动时执行的命令,且不会被docker run命令覆盖,但可以追加参数。

  2. EXPOSE - 声明容器端口

    EXPOSE 8000
    

    声明容器运行时提供服务的端口,但不会自动映射端口。

  3. VOLUME - 创建挂载点

    VOLUME /data
    

    创建可以从本地主机或其他容器挂载的挂载点。

用户和权限
  1. USER - 设置运行命令的用户
    USER appuser
    
    设置RUN、CMD和ENTRYPOINT命令执行的用户。
健康检查
  1. HEALTHCHECK - 设置健康检查
    HEALTHCHECK --interval=5m --timeout=3s \CMD curl -f http://localhost/ || exit 1
    
    为容器设置健康检查命令。

简单示例

下面是一个简单的Python Flask应用的Dockerfile示例:

这个Dockerfile的工作流程是:

  1. 基于Python 3.9的轻量级镜像
  2. 设置工作目录为/app
  3. 复制requirements.txt并安装依赖
  4. 复制应用代码到镜像中
  5. 暴露5000端口
  6. 设置Flask应用的环境变量
  7. 定义容器启动时运行的命令

学习Dockerfile最好的方法是实践,建议你尝试构建一些简单的镜像,然后逐步学习更复杂的用法。

FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 安装依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt# 复制应用代码
COPY . .# 暴露端口
EXPOSE 5000# 设置环境变量
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0# 运行应用
CMD ["flask", "run"]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/85903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring中@Primary注解的作用与使用

在 Spring 框架中,Primary 注解用于解决依赖注入时的歧义性(Ambiguity)问题。当 Spring 容器中存在多个相同类型的 Bean 时,通过 Primary 标记其中一个 Bean 作为默认的首选注入对象。 核心作用: 解决多个同类型 Bean …

本地优先的状态管理与工具选型策略

本地优先:合理把控状态共享边界 在 React 应用开发过程中,开发者容易陷入一个认知误区——过度追求状态的全局化。许多新手开发者在项目初期就急于引入 Redux、Zustand 或 Jotai 等状态管理工具,将一些本应属于组件内部的琐碎状态&#xff0…

OpenCV CUDA模块图像处理-----对图像执行 均值漂移过程(Mean Shift Procedure)函数meanShiftProc()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 执行一个均值漂移过程(mean-shift procedure),并将处理后的点的信息(它们的颜色和位置&#xff0…

硬件I2C和软件I2C的区别

硬件I2C和软件I2C的区别 一、硬件I2C 1、硬件IC的局限性及学习意义 尽管硬件IC外设在STM32等微控制器中提供了标准化的通信支持,但在实际应用中,其稳定性可能存在问题。例如,某些情况下外设会因事件检测异常而进入死锁状态,仅能…

推荐12个wordpress企业网站模板

WordPress企业网站模板是一种专为企业网站设计的WordPress主题,旨在帮助企业创建专业、美观且易于管理的网站。这些模板通常具备响应式设计、SEO优化、多语言支持等功能,能够满足不同行业和企业的需求。 WordPress企业网站模板的适用场景 企业官网&…

68道Hbase高频题整理(附答案背诵版)

简述什么是Hbase数据库? Hbase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,它利用HBase技术在HDFS上提供了类似于Bigtable的能力。换句话说,Hbase是Apache Hadoop生态系统中的一部分,可以为大数据应用提供快速的随机…

PyTorch——卷积操作(2)

二维矩阵 [[ ]] 这里面conv2d(N,C,H,W)里面的四个是 N就是batch size也就是输入图片的数量,C就是通道数这只是一个二维张量所以通道为1,H就是高,W就是宽,所以是1 1 5 5 卷积核 reshape 第一个参数是batch size样本数量 第二个参数…

Linux之MySQL安装篇

1.确保Yum环境是否能正常使用 使用yum环境进行软件的安装 yum -y install mysql-server mysql2.确保软件包已正常完成安装 3.设置防火墙和selinux配置 ## 关闭防火墙 systemctl stop firewalld## 修该selinux配置 vim /etc/selinux/config 将seliuxenforcing修改为sel…

Devops系列---python基础篇二

1、列表 1.1 概念 格式: 名称 [ “元素1”,“元素2”,…] #定义一个列表 computer ["主机","键盘","显示器","鼠标"]类型方法用途查index(“元素”)查看元素索引位置count(“元素”)统计元素出现的次数reverse()倒序排…

LeetCode - 234. 回文链表

目录 题目 快慢双指针步骤 读者可能的错误写法 正确的写法 题目 234. 回文链表 - 力扣(LeetCode) 快慢双指针步骤 找到链表的中点(find_mid函数): 使用快慢指针,慢指针每次走一步,快指针…

UniApp 全生命周期钩子详解

👉 整理不易,如果本文对你有帮助,欢迎点个【赞 👍】【收藏 ⭐】【关注 🧡】 后续我们还将继续分享实用的 UniApp 教程,比如: 文件上传全局请求封装状态管理动态路由等… 📮 有任何…

探索NautilusTrader:下一代开源算法交易平台的革命性突破

在金融科技的浪潮中,量化交易领域正经历一场由开源技术驱动的变革。NautilusTrader(https://github.com/nautechsystems/nautilus_trader)作为一款高性能、生产级的算法交易平台,正以其创新的设计理念和强大的技术架构重塑开发者的策略研发流程。 一、核心定位:打破回测与…

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…

[论文阅读] (38)基于大模型的威胁情报分析与知识图谱构建论文总结(读书笔记)

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期…

python批量解析提取word内容到excel

# 基于Python实现Word文档内容批量提取与Excel自动化存储 ## 引言 在日常办公场景中,常需要从大量Word文档中提取结构化数据并整理到Excel表格中。传统手动操作效率低下,本文介绍如何通过Python实现自动化批处理,使用python-docx和openpyxl…

win32相关(远程线程和远程线程注入)

远程线程和远程线程注入 CreateRemoteThread函数 作用:创建在另一个进程的虚拟地址空间中运行的线程 HANDLE CreateRemoteThread([in] HANDLE hProcess, // 需要在哪个进程中创建线程[in] LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全…

Flyway

Flyway 是一个强大的数据库版本控制和迁移工具,主要用于管理数据库结构的变更和演进。 核心作用 1. 数据库版本控制 追踪数据库变更:记录每次数据库结构的修改版本管理:为每个变更分配版本号变更历史:完整记录数据库演进过程 …

【深尚想】OPA855QDSGRQ1运算放大器IC德州仪器TI汽车级高速8GHz增益带宽的全面解析

1. 元器件定义与核心特性 OPA855QDSGRQ1 是德州仪器(TI)推出的一款 汽车级高速运算放大器,专为宽带跨阻放大(TIA)和电压放大应用优化。核心特性包括: 超高速性能:增益带宽积(GBWP&a…

机器学习实验八--基于pca的人脸识别

基于pca的人脸识别 引言:pca1.pca是什么2.PCA算法的基本步骤 实例:人脸识别1.实验目的2.实现步骤3.代码实现4.实验结果5.实验总结 引言:pca 1.pca是什么 pca是一种统计方法,它可以通过正交变换将一组可能相关的变量转换成一组线…

【LLIE专题】NTIRE 2025 低照度图像增强第二名方案

Towards Scale-Aware Low-Light Enhancement via Structure-Guided Transformer Design(2025,NTIRE) 专题介绍一、研究背景二、SG-LLIE方法1.和Retinexformer方案对比2.总体方案及创新点3.详细方案3.1 结构先验提取3.2 网络结构3.3 损失函数 …