dockerfile基本内容笔记

如何在python项目里添加并编辑dockerfile dockerfile应该包括哪些内容 在我们得 Python 项目中添加并编辑 Dockerfile 以创建 Docker 镜像,这个 Dockerfile 应该包含所有必要的步骤来安装应用程序的依赖项,设置环境变量,复制项目文件,执行项目代码以及安装运行时(如Xvfb)等。 阅读详情

一、docker file的基本语句

1、FROM
基础镜像,当前新镜像是基于哪个镜像的。(有点类似于JAVA的继承)

FROM 基础镜像

2、MAINTAINER
用于标注镜像维护者的信息,如邮箱、姓名。

MAINTAINER 姓名<邮箱>

3、RUN
容器构建时所需执行的命令。

RUN 执行命令

4、EXPOSE
当前容器默认暴露在外的端口。

EXPOSE 端口号

5、WORKDIR
指定在创建容器后,终端默认登陆的进来工作目录位置。

WORKDIR 进入容器指定默认位置

6、ENV
用来在构建镜像过程中设置环境变量。在下面可通过$来引用该变量

ENV 变量名 变量值

7、ADD
将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包。

ADD 宿主机中文件 放入容器的位置

8、COPY
类似ADD,拷贝文件和目录到镜像中,没对文件进行2次处理

COPY宿主机中文件 放入容器的位置

9、VOLIME
容器数据卷,用于数据保存和持久化工作。后面在创建docker容器时通过-v来设置容器卷映射

VOLUME ["容器路径"] 

10、CMD
指定一个容器启动时要运行的命令。
Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换。

CMD  ["命令","该命令对应的参数"] 	# 空格为一个分割
CMD 命令包括参数linux上这么写的就这么写

11、ENTRYPOINT
指定一个容器启动时要运行的命令
ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及参数

ENTRYPOINT  ["命令","该命令对应的参数"] 	# 空格为一个分割
ENTRYPOINT  命令包括参数linux上这么写的就这么写

12、ONBUILD
当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发。

ONBUILD 子镜像创建时要执行的命令

二、DockerFile构建过程解析

1、构建步骤

案例
编写一个带vim的centos

1、编写dockerfile文档

FROM centos
RUN yun -y install vim

2、docker build

docker build -f dockerfile -t centoswithvim:1.0.0 .

3、docker run

docker run -it centoswithvim:1.0.0

此时就会进入一个带有vim功能的centos
在这里插入图片描述

2、Dockerfile内容基础知识

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

3、Docker执行Dockerfile的大致流程

1、docker从基础镜像运行一个容器
2、执行一条指令并对容器作出修改
3、执行类似docker commit的操作提交一个新的镜像层
4、docker再基于刚提交的镜像运行一个新容器
5、执行dockerfile中的下一条指令直到所有指令都执行完成

在这里插入图片描述

三、案例

案例:创建一个自带tomcat的centos并且能够在宿主机上启动
在这里插入图片描述

1、创建dockerfile2

FROM centos
MAINTAINER magicproblem<magicproblem@csdn.com>
#把宿主机当前文件夹下的内容拷贝到/usr/local/路径下(默认路径)
COPY dockerfile /usr/local/这是我拷贝过来的dockerfile
#把java即tomcat的安装包添加到容器中并解压到 /usr/local/路径下
ADD jre-8u291-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.50.tar.gz /usr/local/
#安装vim编辑器
RUN yum -y install vim
#设置工作路径
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置java与tomcat的环境变量
ENV JAVA_HOME /usr/local/jre1.8.0_291
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.50
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.50
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#开放端口
EXPOSE 8080
#启动tomcat
CMD /usr/local/apache-tomcat-9.0.50/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.50/logs/catalina.out

2、创建docker镜像

docker build -f dockerfile2 -t mycentos:1.0.0 .

执行效果:
在这里插入图片描述
在这里插入图片描述

3、创建docker容器

docker run -d -p 9080:8080 --name mytom -v /mydocker/tomcat9/web/:/usr/local/apache-tomcat-9.0.50/webapp/test -v /mydocker/tomcat9/log/:/usr/local/apache-tomcat-9.0.50/logs --privileged=true mycentos:1.0.0

docker run #docker创建容器指令
-d #后台运行
-p 9080:8080 #端口映射容器在dockersfile中开启8080端口,映射到宿主机9080端口
–name mytom #给容器命名
-v /mydocker/tomcat9/web/:/usr/local/apache-tomcat-9.0.50/webapp/test
-v /mydocker/tomcat9/log/:/usr/local/apache-tomcat-9.0.50/logs #docker容器数据卷映射
–privileged=true # Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied解决办法:在挂载目录后多加一个–privileged=true参数即可
mycentos:1.0.0 镜像名

运行效果:
在这里插入图片描述
宿主机访问效果:
在这里插入图片描述
dockers容器数据卷映射效果:
通过以下指令进入容器

docker exec -it 容器id /bin/bash

在外部放入文件数据:
在这里插入图片描述
容器内部数据:
在这里插入图片描述
注:是要将页面文件放在webapps中才可访问。

Windows Docker笔记-dockerfile 讲述了dockerfile的概念、作用、命令等,并用案例演示dockerfile命令 阅读详情

相关推荐

一文读懂Docker之Dockerfile基本使用

本文介绍了Dockerfile常用指令及实战应用。主要内容包括:1)基本指令如FROM、RUN、CMD等;2)Shell与Exec格式区别;3)CMD指令特点及演示;4)实战将Python应用打包成镜像。重点讲解了指令格式、容器启动命令设置,并通过Flask应用实例演示了从Dockerfile构建到容器运行的全流程。文中还提供了错误排查方法,如通过临时镜像进入容器调试。

野熊佩骑的博客 1092

DockerFile

#继承自centos镜像 FROM centos #容器的根目录下创建2个文件夹共享数据,inspect进入容器看挂载的目录映射的宿主机的目录 #这里是匿名挂载,一般在/var/lib/docker/下面找 VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"] #输出 CMD echo "finished,---------------success" #执行 CMD /bin/bash #构建镜像,注意结尾的点后别忘记 docker build.

RT_0114的博客 1264

Z-Image Turbo LoRA训练全流程:从数据标注到模型部署的保姆级指南(附ai-toolkit配置)

本文提供了一份详尽的Z-Image Turbo LoRA模型训练全流程指南,涵盖从数据准备、智能标注、参数调优到最终模型部署与Z-Image集成的每个环节。重点解析了使用ai-toolkit训练整合包进行高效训练的核心技巧与避坑方法,旨在帮助用户稳定训练出高质量的专属角色模型。

weixin_29088655的博客 965

Docker入门之Dockerfile篇

前面我们使用docker commit只做了一个自己的镜像,但是这个主要适用于学习以及一些特殊的用途,实际应用一般不会通过这种方式制作镜像.因为docker commit只是把变动的文件中纸做成了镜像,比如之前文章中创建test镜像的时候,记录的是创建的/test这个文件夹,但是变动单而过程无法记录,没有办法追踪到我是通过mkdir /test这个命令创建的/test目录.这样的话就非常不利于追踪...

Libra_Ng 777

避开这些坑!RK3588安卓系统内置输入法的正确姿势(含.mk文件修改指南)

本文详细解析了在RK3588安卓系统定制中预置第三方输入法的完整流程与关键避坑指南。重点涵盖APK签名、Android.mk文件编写、系统默认输入法配置(使用adb ime list命令获取服务名)以及SeLinux策略适配等核心步骤,并指出RK3566/RK3568等兄弟平台的通用性与差异点,帮助开发者实现稳定、深度的系统集成。

tgb34567890的博客 437

储能系统架构和控制

探讨了储能系统中EMS(能源管理系统)、BMS(电池管理系统)和PCS(功率转换系统)之间的协同机制,以及组串式和集中式储能系统的技术架构、优势和局限性。EMS根据电价、电网需求和电池状态制定充放电策略,BMS提供电池数据,PCS执行充放电控制。组串式系统具有独立管理和灵活扩展的优势,但成本较高;集中式系统成本效益高,但存在环流和木桶效应问题。

蓝龙宝藏的博客 3969

DockerFile文件解析

DockerFile文件解析

qq_45371023的博客 5239

UE5 使用Slate制作对话窗口

使用Slate制作对话框窗口并获取对话框结果,非UMG

qq_25521145的博客 3189

C++之智能指针类模板

智能指针类模板 智能指针的意义 1、现代C++开发库中最重要的类模板之一 2、C++中自动内存管理的主要手段; 3、能够在很大程度上避开内存相关的问题。 STL中的智能指针auto_ptr 1、生命周期结束时,销毁指向的内存空间; 2、不能指向堆数组,只能指向堆对象(变量); 3、一片堆空间只属于一个智能指针对象; 4、多个智能指针对象不能指向同一片堆空间。 实例分析1 #include <iostream> #include <string> #include <cstdli

weixin_43985500的博客 483

算法-基于MACD的Adaboost股价涨跌预测模型

MACD是一个指标,具体用法是MACD>0看涨,反之看跌,果真是这样的吗?由于所有的技术指标都基于对历史数据的统计,指标的滞后性也就难免,有时候MACD明明大于0,股价仍然跌,有时候macd小于0,股价仍然涨。 本文基于Adaboost算法提出了一种基于macd的线性阀值分类器作为若分类器,通过在限定的解空间内寻找使得错误率最小的阀值和偏置,这样做避免了训练若分类器的复杂性,经验证,这种方法有效。

mtaxot的博客 8023

HTOL集成电路老化测试学习总结-20250510

电子元器件的可靠性在产品开发中至关重要,尤其是在微电子技术迅速发展的今天。电子元器件的失效率通常遵循“浴盆曲线”,分为早期失效期、可使用期和老化期。为了评估芯片的可靠性,常采用高温操作寿命测试(HTOL),通过高温和高压加速芯片老化,以筛选出早期失效的芯片并评估其长期可靠性。HTOL测试中,芯片在高温下运行并监控其性能变化,通过阿伦尼乌斯公式计算加速因子,预测芯片的失效率和寿命。此外,Burn-in测试用于加速芯片老化,提前发现并剔除不合格产品,而早期失效率测试(ELFR)则用于评估产品初期使用阶段的可靠性

歌颂苦难的行为是无耻的; 2104

Docker CMD

Docker CMD 最近在学习docker相关的知识,看了一下docker从入门到实践,说实话这本书感觉一般般,CMD这部分写得还行,所以简单记录一下CMD相关的内容。(如果也是学习docker,推荐大家直接上第一本docker书) COPY 用于copy文件,用法: COPY <源文件> ... <目标目录>; COPY ["文件1", "文件2", ..., "目标...

愿世界和平 910

R语言机器学习算法实战系列(十一)MLP算法分类器 (Multi-Layer Perceptrons)

本文介绍了多层感知器(MLP)分类算法的原理和计算步骤,并通过R语言实现MLP模型。MLP是一种前馈神经网络,包含输入层、隐藏层和输出层,通过激活函数引入非线性,利用前向传播和反向传播进行训练。文章详细描述了数据预处理、数据切割、模型构建、预测和评估等步骤,并提供了乳腺癌数据集(BreastCancer_clean.csv)的下载链接。通过R包如neuralnet和caret,读者可以逐步实现MLP模型,并评估其分类性能。

专注生信领域 935

Dockerfile详解(Dockerfile的基本结构、使用Dockerfile自定义镜像示例、主流编程语言和中间件的基础Docker镜像、编写Dockerfile的最佳实践)

Dockerfile详解(Dockerfile的基本结构、使用Dockerfile自定义镜像示例、主流编程语言和中间件的基础Docker镜像、编写Dockerfile的最佳实践)

聂可以的博客 1万+

AI挖矿技术全景解析:从智能勘探到自主开采的2025年度技术演进与产业变革

随着全球关键矿产资源需求激增与开采难度加剧,人工智能(AI)技术正在重塑矿业全生命周期。本文系统综述了2025年AI挖矿技术的最新进展,涵盖从地质勘探、资源评估到自主开采、安全监控的完整技术链条。基于Elsevier 2025年发表的最新研究成果及IEEE会议前沿动态,本文深入分析了深度学习、强化学习、计算机视觉等核心技术在矿物识别、品位预测、设备维护等场景的应用机制。研究数据显示,AI技术已使勘探成功率提升45%,设备停机时间减少35%,整体运营效率提高40%以上。

nmdbbzcl的博客 2084

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【Docker笔记04】【Dockerfile】

本系列是根据学习记录笔记。因为没有视频课件,部分内容摘自。本系列仅为自身学习笔记记录使用,记录存在偏差,推荐阅读原视频内容或本文参考笔记。

猫吻鱼的博客 1223

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Dockerfile的基本操作

使用。

2301_79724805的博客 1891

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Dockerfile基本结构及基本指令

Dockerfile基本结构及基本指令

娃娃的博客 1141

【docker笔记】DockerFile

要求Centos7镜像具备 vim + ifconfig + jdk8JDK下载镜像地址官网:https://www.oracle.com/java/technologies/downloads/#java8构建Dockerfile。

jinx 1702

Docker学习笔记:DockerFile

指令说明FROM基础镜像,当前新镜像是基于哪个镜像的,有继承的意味。比如我们可以写或者MAINTAINER镜像维护者的姓名和邮箱地址RUN容器构建时需要运行的命令。比如。EXPOSE当前容器对外暴露的端口WORKDIR指定在创建容器后,终端默认登录的进来工作目录,一个落脚点ENV用来在构建镜像过程中设置环境变量ADD将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包COPY类似ADD,拷贝文件和目录到镜像中。

sinat_38393872的博客 1034

dockerfile基本语法

指令用于在容器中创建一个挂载点,并将其链接到主机上的一个目录,从而允许容器中的数据持久化保存到主机上。使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如果该目录不存在,WORKDIR 会帮你建立目录。指令,则会使用基础镜像中的默认CMD指令,如果基础镜像中也没有默认CMD指令,则容器启动时将会立即退出,cmd命令有Shell形式和Exec形式。指令的主要优点是可以在容器启动时提供固定的执行环境,从而确保容器始终以相同的方式运行。

2403_87920530的博客 916

Dockerfile 基本命令

Dockerfile 基本命令

m0_51913750的博客 4811

Dockerfile 笔记

Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像。用于指定持久化目录定义匿名数据卷,可实现挂载功能,可以将内地文件夹或者其他容器中得文件夹挂在到这个容器中。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。避免重要的数据,因容器重启而丢失,这是非常致命的。(容器使用的是 AUFS,这种文件系统不能持久化数据,当容器关闭后,所有的更改都会丢失。避免容器不断变大。VOLUME ["", ""...]VOLUME

TMesh的博客 1063

dockerfile copy 拷贝文件夹下所有内容

我整理的一些关于【Docker】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/xltfovDockerfile中的COPY命令:拷贝文件夹下的所有内容 在Docker中,Dockerfile是构建镜像的蓝图,其内容定义了如何构建一个Docker镜像。在Dockerfile中...

weixin_41343069的博客 3535

Dockerfile基本结构及编写详解

Dockerfile基本结构及编写详解

qq_36305027的博客 2557

《Docker极简教程》--Dockerfile--Dockerfile的基本语法

本文介绍了编写Docker镜像构建脚本的基础知识。首先,通过FROM指令选择基础镜像,然后使用RUN指令运行命令,COPY和ADD指令复制文件,CMD和ENTRYPOINT指令定义容器启动时执行的命令。另外,还介绍了WORKDIR、ENV、EXPOSE、VOLUME、ARG、LABEL等指令的用法。了解并熟练使用这些指令,能够有效地构建出高效、可靠的Docker镜像。

喵叔 2606
上一篇: Activiti7学习笔记———activiti进阶
下一篇: SpringSecurity配置及注解说明
magicproblem
博客等级 码龄7年 22粉丝 59原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值