Dockerfile制作镜像
Dockerfile制作镜像
Dockerfile介绍
dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
dockerfile仅仅是用来制作镜像的源码文件,是构建容器过程中的指令,docker能够读取dockerfile的指定进行自动构建容器,基于dockerfile制作镜像,每一个指令都会创建一个镜像层,即镜像都是多层叠加而成,因此,层越多,效率越低,创建镜像,层越少越好。因此能在一个指令完成的动作尽量通过一个指令定义。
使用docker build命令,用户可以创建基于基础镜像的自定义镜像。
Dockerfile指令
FROM
指定基础镜像,Dockerfile的第一条命令
格式:
FROM
FROM :
若使用第一种格式,则基础镜像的tag为latest
MAINTAINER
镜像维护者信息
格式:
MAINTAINER
RUN
构建镜像时在镜像中运行的shell命令
格式:
RUN
RUN [“executable”, “param1”, “param2”]
第一种格式(shell形式)默认使用/bin/sh -c 执行命令,推荐使用第一种格式
第二种格式(exec形式)使用exec执行命令
若想使用其他shell类型执行命令,请使用第二种格式即 RUN [“/bin/bash”,“-c”,“command”]
多条RUN命令可以合并,如:
RUN command1
&& command2
&& command3
ENV
设置镜像的环境变量
格式:
ENV
ENV = …
第一种格式一次只能设置一个环境变量
第二种可以设置多个环境变量,若需换行使用反斜杠()
EXPOSE
设置启动镜像时要暴露的端口,用于与外界交互
格式:
EXPOSE […]
VOLUME
申明容器挂载点
格式:
VOLUME [“/path1/to/dir1”,“/path2/to/dir2”]
USER
指定启动镜像时运行用户
格式:
USER [:]
USER [:]
使用用户之前请确保镜像中有该用户,创建用户可以 RUN groupadd -r 用户 && useradd -u uid -r -g 用户组 用户
使用USER指定用户后,通过docker run运行容器时,可以通过-u参数来覆盖所指定的用户
WORKDIR
设置进入容器的默认目录
格式:
WORKDIR </path/to/workdir>
ADD
拷贝本地文件或目录到镜像中
格式:
ADD
ADD [“”, “”] 用于支持包含空格的路径
src是Dockerfile文件所在的同一级目录或者同级目录的子目录路径
tar类型的文件会自动解压到dest目录下
注意:
1.src是个文件,且dest以 / 结尾, 则docker会把dest当作目录,会把src文件拷贝到dest目录下。
如果dest不存在,则会自动创建
2.src是个文件,且dest不以 / 结尾,则docker会把dest当作文件,会把dest文件替换为src文件。
如果dest不存在,则创建名为src的文件
3.src是个目录,且dest不存在,则docker会自动以dest创建一个目录,把src目录下的文件拷贝进来。
如果dest是个已经存在的目录,则docker会把src目录下的文件拷贝到dest下
COPY
拷贝本地文件或目录到镜像中
格式:
COPY
与ADD功能相似,但是不能解压tar类型的文件
CMD
启动容器时执行的shell命令
格式:
CMD [“executable”,“param1”,“param2”] (exec形式执行可执行文件,优先)
CMD command param1 param2 (shell形式执行命令)
Dockerfile中只能有一条CMD命令,如果指定多条,只有最后一条生效,推荐使用第一种格式
第二种格式默认使用/bin/sh -c 执行命令
若要改变shell类型,请使用第一种格式即 CMD [“/bin/bash”,“-c”,“command”,“param1”,“param2”]
CMD会被docker run命令行指定的参数所覆盖
ENTRYPOINT
启动容器时执行的shell命令
格式:
ENTRYPOINT [“executable”,“param1”,“param2”] (exec形式执行可执行文件,优先)
ENTRYPOINT command param1 param2 (shell形式执行命令)
第二种格式默认使用/bin/sh -c 执行命令
Dockerfile文件中也可以存在多个ENTRYPOINT指令,但仅有最后一个会生效
同CMD类似,但是不会被docker run命令行指定的参数所覆盖,可以被docker run --entrypoint 覆盖
若Dockerfile中既有CMD(通常位置会在ENTRYPOINT之后)又有ENTRYPOINT,则CMD会被当做参数传递给ENTRYPOINT
ARG
构建镜像时,指定变量
格式:
ARG
ARG =
第一种格式:变量值可以在docker build --build-arg name=value时指定
制作镜像
制作镜像的基础命令:
Dockerfile在当前目录下:
docker build -t 镜像名:tag .
Dockerfile不在当前目录下(-f 指定Dockerfile文件路径,xxx/为构建docker镜像时的上下文路径,即该目录下的文件可以在Dockerfile中COPY/ADD):
docker build -t 镜像名:tag -f xx/Dockerfile xxx/
相关文章:
Dockerfile制作镜像
Dockerfile制作镜像 Dockerfile介绍 dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 dockerfile仅仅是用来制作镜像的源码文件,是构建容器过程中的指令,docker能够读取dockerfile的指定进行自动…...
如何在宝塔面板中设置FTP文件传输服务并实现远程文件管理
文章目录 1. Linux安装Cpolar2. 创建FTP公网地址3. 宝塔FTP服务设置4. FTP服务远程连接小结 5. 固定FTP公网地址6. 固定FTP地址连接 宝塔FTP是宝塔面板中的一项功能,用于设置和管理FTP服务。通过宝塔FTP,用户可以创建FTP账号,配置FTP用户权限…...
记录 | 设置容器内外时间一致
1.共享主机的localtime 创建容器的时候指定启动参数,挂载localtime文件到容器内,保证两者所采用的时区是一致的 docker run -ti -d --name my-nginx -v /etc/localtime:/etc/localtime:ro docker.io/nginx /bin/bash 2.复制主机的localtime docker …...
LeetCode 239 滑动窗口最大值
LeetCode 239 滑动窗口最大值 问题描述 给定一个整数数组 nums 和一个整数 k,定义一个大小为 k 的滑动窗口,该窗口从数组的最左侧移动到最右侧。你可以看到在滑动窗口内的 k 个数字,并返回滑动窗口中的最大值。 解题思路 我们可以利用一个…...
Vue单文件组件(SFC)规范
Vue 单文件组件 (SFC) 规范 文件地址:Vue单文件组件规范 简介 .vue 文件是一个自定义的文件类型,用类 HTML 语法描述一个 Vue 组件。每个 .vue 文件包含三种类型的顶级语言块 <template>、<script> 和 <style>,还允许添加…...
简单版 git快速上手使用 clone项目 新建/切换分支 提交修改
Git是一个广泛使用的版本控制系统,允许多个用户跟踪文件的更改,并协作开发项目。 首先确定自己电脑已经安装了git,具体安装步骤请查找教程,应该不难。 以windows电脑为例,安装完后在搜索栏搜索git会出现 先解释一下这…...
本届挑战赛季军方案:基于图网络及LLM AGENT的微服务系统异常检测和根因定位方法
aiboco团队荣获本届挑战赛季军。该团队来自亿阳信通。 方案介绍 本届挑战赛采用开放式赛题,基于建行云龙舟运维平台的稳定性工具和多维监控系统,模拟大型的生活服务APP的生产环境,提供端到端的全链路的日志、指标和调用链数据。参赛队伍在组…...
【MySQL】_内连接
本专栏关于联合查询已建好相应库与表,链接如下: 【MySQL】_联合查询基础表-CSDN博客 基于以上库与表,本篇介绍内连接; 内连接表示语法有两种: 第一种: select [列名],[列名]... form [表1],[表2] where…...
ElasticSearch之跨集群搜索cross cluster search
写在前面 本文看下跨集群搜索相关内容。 1:实战 1.1:创建集群 bin/elasticsearch -E node.namecluster0node -E cluster.namecluster0 -E path.datacluster0_data -E discovery.typesingle-node -E http.port9200 -E transport.port9300 bin/elastic…...
06|Mysql内部组件结构
1. 连接器 客户端要向mysql发起通信都必须先跟Server端建立通信连接,而建立连接的工作就是由连接器完成的 mysql -h host[数据库地址] -u root[用户] -p root[密码] -P 3306连接步骤: 1、如果用户名或密码不对,你就会收到一个"Access denied for us…...
文件的写出操作
1. 文件不存在,创建文件后写出方法: <1>打开文件:open()方法是文件不存在时创建文件 file open("D:/test.txt","w",encoding"UTF-8")<2>写出文件: file.write("please open your book") #内容写到内…...
使用gitlab搭建npm的依赖库,并在项目中使用
使用gitlab搭建npm的依赖库,并在项目中使用 背景 1, 在多个项目中都有个公共的库包,又不想发布到npm 2, 一些开源的库,修改了一些定制化的东西,又不想推送代码到开源仓库(不一定会合并你的代码…...
如何让电脑待机而wifi不关的操作方法!!
1、一台电脑如果一天不关机,大约消耗0.3度电。 一般一台电脑的功耗约为250-400W(台式机)。 一台电脑每月的耗电量:如果是每小时300W每天10小时每月30天90KW,即90千瓦时的电。 这只是保守估计。 2、使用完毕后正常关闭…...
如何在Spring Boot应用中进行文件预览?
在Spring Boot应用中实现文件预览功能,具体方法取决于文件的类型和你想如何预览它们。以下是一些常见文件类型的预览方法: 1. **图片预览**: 对于图片文件,你可以直接在HTML页面中通过<img>标签的src属性引用图片的URL来…...
阿里云4核16G服务器多少钱?幻兽帕鲁配置报价
2024阿里云幻兽帕鲁专用服务器价格表:4核16G幻兽帕鲁专用服务器26元一个月、149元半年,默认10M公网带宽,8核32G幻兽帕鲁服务器10M带宽价格90元1个月、271元3个月。阿里云提供的Palworld服务器是ECS经济型e实例,CPU采用Intel Xeon …...
el-autocomplete 提示文字出不来?修改支持模糊搜索提示
查看本专栏目录 关于作者 还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas&#x…...
CentOS8 同步时间chrony ntpdate已无法使用
CentOS8系统中,原有的时间同步服务 ntp/ntpdate服务已经无法使用,使用yum安装,提示已不存在。 [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) [rootlocalhost ~]# yum install ntp 上次元数据过期检查…...
NFS服务器挂载失败问题
问题 mount.nfs: requested NFS version or transport protocol is not supported背景:现在做嵌入式开发,需要在板端挂载服务器,读取服务器文件。挂载中遇到该问题。 挂载命令长这样 mount -t nfs -o nolock (XXX.IP):/mnt/disk1/zixi01.ch…...
(Linux学习二)文件管理基础操作命令笔记
Linux目录结构: bin 二进制文件 boot 启动目录 home 普通用户 root 超管 tmp 临时文件 run 临时运行数据 var 日志 usr 应用程序、文件 etc 配置文件 dev 文件系统 一、基础操作 在 Linux 终端中,你可以使用以下命令来清屏: clear 命令&am…...
Docker本地部署GPT聊天机器人并实现公网远程访问
文章目录 前言1. 拉取相关的Docker镜像2. 运行Ollama 镜像3. 运行Chatbot Ollama镜像4. 本地访问5. 群晖安装Cpolar6. 配置公网地址7. 公网访问8. 固定公网地址9. 结语 前言 随着ChatGPT 和open Sora 的热度剧增,大语言模型时代,开启了AI新篇章,大语言模型的应用非常广泛&…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...
pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
【Java多线程从青铜到王者】单例设计模式(八)
wait和sleep的区别 我们的wait也是提供了一个还有超时时间的版本,sleep也是可以指定时间的,也就是说时间一到就会解除阻塞,继续执行 wait和sleep都能被提前唤醒(虽然时间还没有到也可以提前唤醒),wait能被notify提前唤醒…...
