DockerFile

使用Dockerfile构建镜像 Dockerfile 是构建和管理 Docker 镜像的重要工具,使用它可以简化应用程序的部署和管理,并提高可重复性、可自动化性、可定制性和可扩展性。由于格式和图片解析问题,为了更好体验可前往阅读原文。 阅读详情

目录

什么是 Dockerfile?

DockerFile的一些规则

docker执行DockerFile的大致流程

DockerFile指令

ENTRYPOINT与CMD比较说明(这俩命令太像了,而且还可以配合使用):

DockerFile实例

实例1:DockerFile基于centos7.9.2009创建Nginx


什么是 Dockerfile?

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

DockerFile的一些规则

  • 每条保留字指令都必须为大写字母且后面要跟随至少一个参数
  • 指令顺序执行,遵循从上到下原则
  • #表示注释
  • 每条指令都会创建一个新的镜像层,并对镜像进行提交

docker执行DockerFile的大致流程

  • docker从基础镜像运行一个容器
  • 顺序执行一条指令对容器做出修改
  • 执行类似docker commit的操作提交一个新的镜像层
  • docker基于刚才提交的镜像运行一个新的容器
  • 执行DockerFile中下一条指令直到文件中的所有指令都执行完成

DockerFile指令

  • FROM:指定基础镜像
  • MAINTAINER:镜像维护者姓名及邮箱地址
  • RUN:容器构建时需要运行的命令
  • EXPOSE:当前容器对外暴露的端口号
  • WORKDIR:指定在创建容器后,终端默认登录进来的工作目录
  • ENV:用来在构建镜像过程中设置环境变量
  • ADD:将宿主机目录下的文件拷贝进镜像,ADD命令会自动处理URL和解压tar压缩包
  • COPY:拷贝文件、目录到镜像中。具体是将从构建上下文目录中<src原路径>的文件或目录复制到新一层镜像的<目标路径>位置 ,有两种写法:COPY src dest 或者 COPY ["src", "dest"]
  • VOLUME:容器数据卷,用于数据保存和持久化工作
  • CMD:指定一个容器启动时要运行的命令
    • 注意DockerFile中可以有多个CMD指令,但只有最后一个在启动时生效,CMD会被 docker run 之后的命令或参数覆盖
    • CMD指令的格式和RUN相似,也是两种格式:
      • shell格式:CMD <命令>
      • exec格式:CMD ["可执行文件", "参数1", "参数2" ...]
      • 参数列表格式:CMD ["参数1", "参数2", ...],在指定了ENTRYPOINT 指令后,用CMD指定具体的参数。
  • ENTRYPOINT:指定一个容器启动时要运行的命令,与CMD一样都是在指定容器启动程序及参数。
  • ONBUILD:当构建一个被继承的DockerFile时运行命令, 父镜像在被子镜像继承后,父镜像的ONBUILD被触发。

ENTRYPOINT与CMD比较说明(这俩命令太像了,而且还可以配合使用):

1. 相同点:

        只能写一条,如果写了多条,那么只有最后一条生效

        容器启动时才运行,运行时机相同

2. 不同点:

         ENTRYPOINT不会被运行的command覆盖,而CMD则会被覆盖

DockerFile实例

实例1:DockerFile基于centos7.9.2009创建Nginx

[root@localhost ~]# mkdir nginx
[root@localhost ~]# cd nginx/
[root@localhost nginx]# vim DockerFile
FROM centos:7.9.2009

MAINTAINER lyh 17633164083@163.com

RUN yum -y update && \
    yum -y install epel-release && \
    yum -y install nginx

COPY nginx.conf /etc/nginx/nginx.conf

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

[root@localhost nginx]# docker build -f DockerFile -t nginx:last .                                           
[root@localhost nginx]# docker images                                                                          
REPOSITORY   TAG        IMAGE ID       CREATED          SIZE
nginx        last       acf5952902af   10 seconds ago   616MB
php          8.1-fpm    74e8931119ae   11 days ago      450MB
httpd        2.4.57     dc1a95e13784   2 weeks ago      145MB
mysql        8.0.32     412b8cc72e4a   2 weeks ago      531MB
nginx        1.23.3     ac232364af84   4 weeks ago      142MB
centos       7.9.2009   eeb6ee3f44bd   19 months ago    204MB
[root@localhost nginx]# docker run -itd -p 80:80 nginx:last 
992da27efb8dc2cebdd3fe767355b9944a994a9eb4a6a45114d1238520c59807
[root@localhost nginx]# docker ps
CONTAINER ID   IMAGE        COMMAND                   CREATED         STATUS        PORTS                               NAMES
992da27efb8d   nginx:last   "nginx -g 'daemon of…"   2 seconds ago   Up 1 second   0.0.0.0:80->80/tcp, :::80->80/tcp   reverent_antonelli

Dockerfile docker中, 镜像是容器的基础,每次执行docker run的时候都会指定哪个基本镜像作为容器运行的基础。我们之前的docker的操作都是使用来自dockerhub提供的官方镜像,直接使用这些镜像只能满足一定的基本需求,当基础镜像无法满足我们的业务需求时,就得使用Dockerfile自己定制这些镜像了。ADD /opt/python3.8.12.tar.gz /opt/ # ADD的解压文件作用,将宿主机的/opt/下的python3.6.tar.gz解压到容器内的/opt/目录下。 阅读详情

相关推荐

高通QCOM Camera Pipeline 可视化工具:从XML到交互式图谱的工程实践

本文详细介绍了高通QCOM Camera Pipeline可视化工具的工程实践,旨在解决Camera驱动与算法工程师在解析复杂XML配置文件时的痛点。该工具能将静态的XML文件(如g_camx_usecase.xml)自动转换为交互式视觉图谱,通过分层布局算法清晰展示Pipeline、Node、Port和Link的拓扑关系,并支持悬停查看、拖动缩放等交互操作,极大提升了开发调试与架构理解的效率。

prometheus5watch的博客 555

dockerfile

dockerfile

Drw_Dcm的博客 2134

Zemax新手别慌!一文搞懂几何像差:从球差、慧差到色差的实战识别与优化

本文为Zemax新手提供几何像差实战指南,详细解析球差、彗差和色差的识别与优化方法。通过软件操作关键节点和实际项目决策逻辑,帮助光学设计师快速掌握像差诊断与优化技巧,提升光学设计效率。

weixin_42524708的博客 260

Dockerfile详解#如何编写自己的Dockerfile

Dockerfile是编写docker镜像必备的技能,那么镜像是如何构建?镜像分层,这个层怎么分的,就是由Dockerfile中的每一条指令构成Dockerfile构建命令:通过即可构建,要求:./下存在Dockerfile文件。

暴躁的菜鸡的博客 1589

基于Cohesive单元的二维水力压裂(二)

部件 2D-deformabel-shell 尺寸100 矩形工具(-20,-20)(20,20) 刨分:预知cohesive单元&定位注液点位置,定义全局网格尺寸0.2 X方向采用过渡网格,向中间加密。指定网格类型:CPE4P,指定单元类型,COH2D4P,粘性正则化系数:0.0001 材料属性 材料1 弹性模量10e9,泊松比0.25,渗透率1e-7,孔隙比0.1,液体比重...

s0302017的博客 1599

WiFi基本概念(六)(L-STF,L-LTF)

L-STF它由10个OFDM symbol(1,0,1,0,1,0,1,0,1,0)构成,每个symbol是0.8us,GI是0.2us,总计10us。Symbol的长度是正常长度的1/4,因此称为Short training field,主要用于快速进行信号检测,信号同步,自动增益控制,接收天线选择(Diversity Selection)。 由于symbol长度是正常的1/4,子载波的宽度是正常的4倍,能进行初略的信道估计,其使用了-24, -20, -16, -12, -8, -4, 4, 8, 1

reekyli的专栏 6863

DockerFile的使用

dockerfile的使用

wkf_java的博客 1万+

YOLOv8首创原创改进:即插即用|创新的轻量化非对称多级压缩LADH检测头

总结而言,本文介绍了一种名为轻量化非对称多级压缩LADH检测头的原创改进,该改进可与YOLOv8无缝适配,并显著提升了检测器的性能。在本文中,我们介绍了一种原创改进的检测头,名为轻量化非对称多级压缩LADH检测头,它可与YOLOv8无缝适配,显著提升了检测器的性能。此外,我们引入了多级压缩的概念,通过在不同的检测层级上应用不同程度的压缩,进一步提升了检测头的轻量化特性。具体而言,我们采用了逐级减少卷积核数量和通道数量的策略,以降低模型的参数量和计算复杂度,同时保持较高的检测精度。

IbcVue的博客 2182

Dockerfile文件作用,Dockerfile究竟是做什么的

什么是dockerfile?Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。Docker通过读取Dockerfile中的指令自动生成映像。dockerbuild命令用于从Dockerfile构建映像。可以在dockerbuild命令中使用-f标志指向文件系统中任何位置的Dockerfile。Docker通过dockerfile来自动构建镜像.Dockerfile四部分说明一开始必须要指明所基于的镜像名称,关键字是FROM,这是必须的....

鹏神丶明月天 1万+

粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解

粒子群算法,也称粒子群优化算法或鸟群觅食算法(Particle Swarm Optimization),缩写为 PSO, 是近年来由J. Kennedy和R. C. Eberhart等开发的一种新的进化算法(Evolutionary Algorithm - EA)。

猫敷雪 893

TC397 EB MCAL开发从0开始系列 之 [13.1] Dma配置实战 -实现M2M数据传输(读存储写存储)

TC3XX TC397 MCAL DMA 从0搭建测试用例-实现M2M 存储到存储数据传输

yy九歌的博客 1914

dockerfile 权限_你必须知道的Dockerfile

本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。本文预计阅读时间为5分钟。01—关于Dockerfile在Docker中创建镜像最常用的方式,就是使用Dockerfile。Dockerfile是一个Docker镜像的描述文件,我们可以理解成火箭发射的A、B、C、D…的步骤。Dockerfile其内部包含了一条条的指令,每一条指令...

weixin_39878401的博客 2810

【逐函数讲解ORB_SLAM3源码】获取普通帧率、关键帧、IMU数据

获得imu的旋转 mRwc * mImuCalib.mTcb.rotationMatrix(); Sophus::SE3 mTwc 创建ORB_SLAM3系统 Create SLAM system. It initializes all system threads and gets ready to process frames. ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::IMU_RGBD, true, 0, file_nam

小秋 AI SLAM 入门实战教程 1245

Dockerfile编写、部署及优化

引言 一、Dockerfile分层原理 1、初步了解镜像 第⑥层:container容器层——可读可写——运行image镜像——需要CMD、entrypoint来启动用(定义:nginx -g daemon off / run.sh) 第⑤层:调整配置文件——镜像层4——run sed -i /usr/local/nginx/conf/nginx.conf 第④层:配置编译安装——./configure && make&&make install——镜像层3——ru

Wan_JF的博客 3579

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Dockerfile的命令

1.基本说明   Dockfile是一个用于编写docker镜像生成过程的文件,其有特定的语法。在一个文件夹中,如果有一个名字为Dockfile的文件,其内容满足语法要求,在这个文件夹路径下执行命令:docker build --tag name:tag .,就可以按照描述构建一个镜像了。name是镜像的名称,tag是镜像的版本或者是标签号,不写就是lastest。注意后面有一个空格和点。 2.Dockfile语法   Dockerfile的基本指令有十三个,分别是:FROM、MAINTAINER..

qq_39458487的博客 6291

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Dockerfile基础

Dockerfile是构建Docker镜像的关键脚本文件,它通过指令分层定制镜像内容。相比docker commit手动创建镜像的方式,Dockerfile具有可重复性、透明性和体积优化等优势,但需要掌握其语法。Dockerfile包含基础镜像、维护信息、操作指令和启动命令四部分,通过docker build命令构建镜像。常用指令包括FROM、ARG、ENV、COPY、RUN等,构建时应遵循单一职责、最小化等原则。合理使用Dockerfile能创建高效、可维护的容器镜像。

weixin_74344274的博客 1105

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

dockerfile文件

Dockerfile 是一个文本文件,开发者使用它来定义如何构建一个Docker镜像。它是自动化构建Docker镜像的标准方法,包含了用于构建镜像的一系列指令,这些指令会被Docker引擎按顺序逐行解析并执行。

m0_74356429的博客 1386

Dockerfile(Dockerfile的详细使用、通过Dockerfile构建apache镜像)

文章目录1 Dockerfile介绍2 基本结构2.1 Dockerfile分为四部分3 Dockerfile 基础知识4 Dockerfile常用指令4.1 FROM4.2 LABEL MAINTAINER4.3 RUN4.4 CMD4.5 EXPOSE4.6 ENV4.7 COPY4.8 ADD4.9 ENTRYPOINT4.10 VOLUME4.11 USER4.12 WORKDIR4.13 ONBUILD5 构建镜像注意事项6 使用Dockerfile构建apache镜像 1 Dockerfile介

m0_56305656的博客 3894

dockerfile的使用,使用dockerfile部署springboot项目

Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。官网:https://docs.docker.com/engine/reference/builder/

秃了也弱了 4626

Ubuntu上,使用Dockerfile

docker官方文档对初学者极不友好,本文试图形成一篇学习者友好的入门指引。 本文基于Ubuntu,docker在windows下有很多不同的用法,本文不涉及。 本文只讲Dockerfile的使用,docker的安装和手工使用见https://blog.youkuaiyun.com/xiefeisd/article/details/88412334 1 hello world 1.1 创建镜像 $ ...

xiefeisd的博客 4630

Docker之DockerFile

DockerFile在Docker中是非常重要的一部分,在之前的文章使用过DockerFile build过镜像模板,Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。 构建三步骤:编写Dockerfile文件,上篇文章写过==》docker build==》docker run 文件是什么样子?以centos为例: https://hub.dock...

程序员 1667
上一篇: docker 部署LNMP
下一篇: docker部署harbor
郝1.
博客等级 码龄8年 805粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值