docker系列-Dockerfile构建镜像

【docker】使用 Dockerfile 构建镜像 Dockerfile 是用于构建 Docker 镜像的文本文件。它包含了一系列的指令,用于描述如何构建镜像的步骤和配置。通过编写 Dockerfile,您可以定义镜像的基础环境、安装软件包、复制文件、设置环境变量等操作。Dockerfile 提供了一种可重复、可自动化的方式来构建镜像,使得您可以轻松地创建和部署应用程序的容器化版本。Dockerfile 的编写非常灵活,您可以根据自己的需求和项目的特点来定义构建镜像的步骤和配置。 阅读详情

Dockerfile构建镜像

使用当前目录Dockerfile构建镜像命令:

docker build -t mynginx:1.0.0 .

-t: 镜像的名字及标签,通常 name:tag 或者 name 格式;
Dockerfile内容:

FROM nginx:1.12.1
ADD dist.tar /usr/share/nginx/html/
RUN cd /usr/share/nginx/html/dist/  && mv -f * ../
ADD nginx.conf /etc/nginx/
ADD default.conf /etc/nginx/conf.d/
ADD frontendShell.sh /usr/share/nginx/html/
RUN chmod +x /usr/share/nginx/html/frontendShell.sh
ADD dockerEnv.sh /usr/share/nginx/html/
RUN chmod +x /usr/share/nginx/html/dockerEnv.sh
WORKDIR /usr/share/nginx/html
EXPOSE 80
ENTRYPOINT ["/usr/share/nginx/html/frontendShell.sh"]

下面逐个解释:

1. FROM

基础镜像。

FROM nginx

定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。

2. RUN

RUN shell命令行命令

用于执行后面跟着的命令行命令。有以下俩种格式:

  1. shell 格式:
RUN <命令行命令>

<命令行命令> 等同于,在终端操作的 shell 命令。

  1. exec 格式:
    RUN [“可执行文件”, “参数1”, “参数2”]
    例如:
 RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline

3. COPY

复制指令,从上下文目录中复制文件或者目录到容器里指定路径。

COPY 源路径 目标路径

4. ADD

ADD 指令和 COPY 的使用格式一致(同样需求下,官方推荐使用 COPY)。功能也类似,不同之处如下:

  • ADD 的优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。
  • ADD 的缺点:在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。

5. WORKDIR

  • 指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。(WORKDIR 指定的工作目录,必须是提前创建好的)。
  • docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。
    格式:
WORKDIR <工作目录路径>

6. CMD

类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:

  • CMD 在docker run 时运行。
  • RUN 是在 docker build。
    作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。
    注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。

7. EXPOSE

仅仅只是声明端口。
作用:

  • 帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。
  • 在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。
    格式:
EXPOSE <端口1> [<端口2>...]
【docker系列】使用dockerfile快速构建一个自己的镜像 使用dockerfile快速构建自己的镜像,语法表 阅读详情

相关推荐

运维系列:Docker学习笔记(3)-- 如何使用Dockerfile构建镜像

Docker学习笔记(3)-- 如何使用Dockerfile构建镜像

weixin_54626591的博客 630

【docker】dockerfile构建镜像

docker run创建并启动容器,再通过docker exec/cp 等容器操作指令修改容器内容,然后再去用docker commit提交成新的镜像。

manyulanlanlu的博客 1万+

从PWM到正弦波:RC低通滤波器的魔法转换之旅

本文详细介绍了如何利用RC低通滤波器将STM32F103生成的PWM信号转换为高质量正弦波的技术原理与实践方法。通过分析滤波器设计、参数计算、硬件实现及Proteus仿真验证,为嵌入式开发者提供了一套完整的PWM转正弦波解决方案,适用于电机控制、音频信号生成等多种应用场景。

jupi8的博客 380

docker:dockerfile构建镜像

Dockerfile是一个文本文件,文件中包含了一条条指令(instrucation),用于构建镜像。每一条指定构建一层镜像,因此每一条指令的内容,就是描述该层镜像应当如何构建。

一两风的博客 1万+

用OpenCV+ROS实现焊接机器人智能纠偏:线激光视觉的算法调参全流程

本文详细介绍了基于OpenCV和ROS的焊接机器人智能纠偏系统全流程。通过线激光视觉系统实时感知焊缝,重点解析了抗干扰图像预处理、改进的Steger算法提取激光条纹中心线,以及从2D像素到机器人基坐标系的完整坐标变换。该系统为应对焊接飞溅、弧光等复杂工况,实现高精度实时路径纠偏提供了从算法优化到工程集成的完整解决方案。

vodka的博客 157

RK3588开发板实战:从零开始移植Ubuntu 24.04(讯为SDK版)

本文详细介绍了如何在RK3588开发板上从零开始移植Ubuntu 24.04系统(讯为SDK版),涵盖开发环境准备、SDK解析、根文件系统定制、驱动适配、系统集成与烧录等全流程。通过实战案例,帮助开发者快速掌握RK3588开发板的系统移植技巧,适用于嵌入式开发与定制化Linux系统构建。

sand8的博客 436

Docker(七)—— 如何用Dockerfile制作自己的镜像

自己写了一个小程序,如何带着环境打包成一个镜像,然后发布给别人run起来呢?以前程序员需要交付一个jar包或者war包,但是现在!

qq_44886213的博客 1万+

ECU-TEST 快速入门

ECU-TEST 是由位于德国德累斯顿的TraceTronic公司开发的一款用于嵌入式系统测试验证软件工具。自从2003年首次发布ECU-TEST ,该软件成为了汽车ECU开发的标准工具 ,同时也逐步成为了重型机械和工业自动化开发的标准工具 。该软件是起源自于一个控制单元的系统化测试的项目研究,从而为从德累斯顿工业大学脱离出来的TraceTronic公司奠定了基础。ECU-TEST旨在完成测试案例的规范化、评估、求解和归档。得益于该软件包含大量的自动化测试方法使得测试案例的所有必要功能如创建、求解和评估

wangying202的博客 1万+

使用Dockerfile创建镜像

Dockerfile由一条一条的指令组成,并且有自己的书写格式和支持的命令,当需要在容器镜像中指定自己额外的需求时,只需在Dockerfile上添加或修改指令,然后通过docker build生成我们自定义的容器镜像。Dockerfile中包含多种指令,如果涉及到部署最多使用的算是RUN命令了,使用RUN命令时,不建议每次安装都使用一条单独的RUN命令,可以把能够合并安装指令合并为一条,这样就可以减少镜像分层。如果用户启动容器时候指定了运行的命令,则会覆盖掉CMD指定的命令。这在跨系统打包时非常有用。

2402_88627342的博客 6397

剪映专业版关键帧完全教程:从原理到实战的动画必修课

关键帧是视频动画的核心原理。视频由连续静止画面(帧)构成,关键帧记录素材属性变化的起始与结束状态,中间过渡帧由软件自动计算生成。剪映专业版中,视频、音频、文本、贴纸等素材均支持关键帧动画,可调节位置、缩放、旋转、不透明度、音量等参数。操作为:在起始位置点击参数旁菱形按钮添加关键帧,移动播放头后调整参数,系统自动生成第二个关键帧。多属性可独立控制并叠加,实现放大同时淡出等复合效果。通过设定变化起点与终点,关键帧能让静止元素产生移动、缩放、淡入淡出等丰富动态,是视频剪辑从基础拼接进阶创意表达的核心技能。掌握关键

深耕计算机专业知识与技术。 2083

华为OD机试真题-查找单入口空闲区域(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【查找单入口空闲区域】,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 查找单入口空闲区域。

qq_45776114的博客 1268

【docker系列】使用Dockerfile构建镜像

本文我们就学习使用Dockerfile构建镜像,以及对Dockerfile的使用做一些补充说明。

字母哥博客 1847

OpenClaw 运行时错误文档:Embedded Run Agent End with Stream Error(嵌入式运行代理结束流式错误)

OpenClaw运行时错误文档:EmbeddedRunAgentEndwithStreamError(OC-ERR-009) 该错误表示LLM提供商在流式传输过程中发生服务器端异常(HTTP 500),属于可恢复的中等严重性错误。典型表现为日志中出现包含"stream_error"和500状态码的错误信息。系统会自动进行错误分类(50%为服务过载,25%网络问题等),并通过内置机制尝试解决:包括模型切换、API密钥轮换和自动重试策略。用户可采取重试请求、切换模型或简化请求内容等操作,管理

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 546

Docker系列六:Dockerfile构建镜像

一:Dockerfile是什么 1.1:介绍 Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。 1.2:构建三步骤 编写Dockerfile文件 --> docker build --> docker run 二:Dockerfile构建过程解析 2.1:Dockerfile内容基础知识 每条保留字指令都必须为大写且后面要跟随至少一个参数 指令按照从上到下,顺序执行 #表示注释 每条指令都会创建一个新的镜像层,并对镜像进行提.

wester的博客 743

Python对象的基本组成和内存示意图及引用的本质

在Python中,变量也称为:对象的引用(reference)。变量存储的就是对象的地址。变量不需要显式声明类型。根据变量引用的对象,Python解释器自动确定数据类型。一个内存块,拥有特定的值,支持特定类型的相关操作。变量位于:栈内存(压栈出栈等细节,后续再介绍)。⚠️Python是动态类型语言。变量通过地址引用了“对象”。

Calor13的博客 557

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

docker 覆盖 entrypoint_docker系列使用Dockerfile构建镜像指令全在这里了详细

前言Dockerfile是用来构建一个镜像的文本,里面包含了一系列构建镜像的命令,可以通过这些指令将我们的项目工程、tomcat、nginx等打包成镜像。Dockerfile指令ADD复制文件ADD <source>...........<target>从source复制到target,其中source可以是Dokcerfile所在的相对路径,也可以是url或者是...

weixin_40002009的博客 451

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

05-docker系列-使用dockerfile构建镜像

声明:本文乃“运维家”原创,转载请注明出处,更多内容请关注公众号“运维家”。主旨上一篇文章介绍了使用commit方式来构建自定义镜像,那么本文来介绍下主流方式,如何使用dockerfile来构建镜像。环境linux环境 docker环境概念Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。下载镜像本文使用nginx镜像来做示范,故而需要先下载一个nginx镜像;[yunweijia@localhost ~]$ sudo docker pull nginx Us

ouyangzhenxin的博客 978

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

dockerfile制作mysql镜像_Docker系列之《Dockerfile构建MySQL镜像》

1、编写镜像Dockerfile(1)创建Dockerfile文件,并在文件开始位置添加使用#注释的描述信息:123# 用途:用作后端数据库持久化服务# 创建时间:2018.06.11(2)定义基础镜像1FROM centos(3)声明维护者信息1MAINTAINER tanshuai [emailprotected](4)定义工作目录1WORKDIR /root/(5)安装相关软件123RUN...

weixin_36473398的博客 1670

Docker系列(三)Dockerfile 离线构建镜像

一、Dockfile介绍:   Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile。Docker程序将读取Dockerfil...

weixin_30678821的博客 1816

【Docker】Docker入门系列_3.3 使用 Dockerfile 构建镜像

本章节会学习: 构建Dockfile 的上下文环境 (context) Dockerfile 文件的编写 docker build 构建基于 Dockerfile 的镜像 docker push 上传至 docker hub 构建Docker 的上下文环境(即拥有Dockerfile的路径) $ mkdir ubuntu_nginx $ cd ubuntu_nginx $ to...

shengda_mao1118的博客 321

07-docker系列-使用dockerfile构建python、jenkins镜像

声明:本文乃“运维家”原创,转载请注明出处,更多内容请关注公众号“运维家”。主旨本文续接上一篇继续使用dockerfile方式,分别构建python、jenkins镜像。环境linux环境 docker环境 python3.7.1 安装包一个,其他版本均可下载软件python安装包可以从官网下载,但是比较麻烦,且需要登录,版本也比较凌乱,在这里小编提供一个3.7.1的python安装包。关注公众号“运维家”,后台回复“python安装包”即可获取下载链接。python镜像构建创建目录,并切换至对应

ouyangzhenxin的博客 1387

docker笔记08 - 实战系列之Dockerfile构建JAVA网站镜像

1.dockerfile文件内容 MAINTAINER hecr 123@qq.com WORKDIR /root/hecr ADD jdk-8u211-linux-x64.tar.gz /usr/local RUN ["mv","/usr/local/jdk1.8.0_211","/usr/local/jdk8"] ENV JAVA_HOME=/usr/local/jdk8 ENV PATH=$PATH:$JAVA_HOME/bin ENV CLASSPATH=.:$JAVA_HOME/lib/dt.ja

hecr_mingong的博客 351

06-docker系列-使用dockerfile构建nginx、redis镜像

声明:本文乃“运维家”原创,转载请注明出处,更多内容请关注公众号“运维家”。主旨本文使用上一篇文章中说到的dockerfile方式,分别构建一个nginx,一个redis镜像。环境linux环境 docker环境nginx镜像构建创建目录,并切换至对应目录:[yunweijia@localhost ~]$ mkdir -pv docker/nginx mkdir: 已创建目录 "docker" mkdir: 已创建目录 "docker/nginx" [yunweijia@localhost ~]$

ouyangzhenxin的博客 1264

Docker系列~使用Dockerfile构建镜像(三)

Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile。Docker程序将读取Dockerfile,根据指令生成定制的image。相比im

Think Different 1243

Docker 系列(七):理解 Dockerfile - 从零开始构建自定义镜像

Dockerfile 是一个文本文件,其中包含了一系列指令,用于自动化构建 Docker 镜像的过程。通过本篇文章,您了解了 Dockerfile 的基本结构、常用指令、构建自定义镜像的示例及最佳实践。接下来,您可以尝试创建自己的 Dockerfile,以满足特定应用的需求。每个指令都是一条构建指令,Docker 会逐行执行这些指令,形成最终的镜像。指令中指定基础镜像的具体版本,以确保构建的稳定性。指令分开,尽量减少镜像层的数量,以优化镜像大小。:选择最小的基础镜像来减少镜像的大小,例如使用。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 1043

一起学docker系列之十三使用Dockerfile构建带有Java 8、Vim和Ifconfig功能的CentOS镜像

Docker是一个强大的工具,可以创建一致、可移植和隔离的环境。在本指南中,我们将介绍如何创建一个基于CentOS的Docker镜像,其中包括了Java 8、Vim和Ifconfig。

cooldream2009的博客 540
上一篇: Linux系列-常用指令
下一篇: docker系列-Linux(centos)安装docker
前端蜗牛君
博客等级 码龄10年 274粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值