dockerfile文件详解之基础语法

一般而言 Dockerfile 可以分为4个部分

(1)基础镜像信息,

(2)维护者信息

(3)镜像操作命令

(4)启动时执行指令

1-注释

用 # 来进行注释

(1)基础镜像信息
1-FROM 指定基础镜像
这里给大家介绍一下一个基础镜像 alpine 非常小, 安全高,很多镜像都喜欢用它作为linux的基础镜像来用。

解下的案例我们也用这个基础镜像

#这是一个基础镜像 FROM alpine

2- LABEL 标签
主要是给我们镜像起一个描述的作用。

之前有一个 MAINTAINER ,过时了,我们不用它了, 但是如果看到有的Dockerfile 中有这个标签,我们知道是什么意思就可以了。

那么LABLE 标签怎么用呢?

LABEL maintainer=“dazhang”
name=“demo”
abc=“info1”
cde=“info2”

这个LABLE 可以省略,也就是可以不用写, 重点是下边的。

3- RUN 指令
RUN指令其实就是在linux 系统上跑一些命令,安装文件, 修改文件等操作。

比如我们要安装nginx

具体用什么命令安装需要看 alpine 的文档,这里我先不给大家演示,

我们就用一个简单的指令,先让大家理解

RUN echo dockefiletest

4-CMD 指令

CMD 是镜像启动时执行指令。

镜像启动如果是要运行很多命令:有2中方法

方法1:准备sh 文件

镜像启动运行这个sh 文件(大多数镜像是用这个方法)

方法2: 在CMD 直接写

CMD sleep 10; echo success

基于Dockerfile构建镜像
我们有了Dockerfile 接下来就要 编译生成我们的镜像 ,

#用来注释
#第一部分 基础镜像部分
FROM alpine
#第2部分: 维护者信息LABEL  mainatiner="dazhhang" \name="demo" \abc="asdf"#第3部分: 镜像操作指令
RUN  echo hello#第4部分: CMD 命令
CMD sleep 300; echo success

然后 在启动容器运行我们生成的镜像。

docker build -t myalpine:v1.0 -f Dockerfile .

-f 是指定我们用哪个Dockerfile 来构建。

. 这个小点代表以当前目录作为构建的基础目录(类似上下文环境)

在这里插入图片描述

检查我们的镜像:

docker images

在这里插入图片描述

运行镜像

我们这次不用后台运行,用交互模式运行,因为我们制作的镜像 最后是睡10秒,就退出了。

没有阻塞进程。

我们先简单演示一下,后续会讲如何设置阻塞进程,让我们的镜像一直运行。

docker run -it --name=myalpin myalpine:v1.0

这个时候 会等待10秒收输出 success
在这里插入图片描述

输出后这个容器就结束了。

docker ps -a

在这里插入图片描述

以上就是我们只做一个镜像的最基本的命令。 大概分为4个部分,每个部分都必不可少。

比如我们现在要制作一个 springboot 项目, 那么基础镜像是一个依赖JDK 环境的镜像对吧,

然后 CMD 是一个带有 java -jar 命令,启动我们的jar 包。

下节课 给大家详细介绍每个指令的含义。

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

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

相关文章

WebFuture:独立一级域名nginx取消配置Secure属性的问题

问题分析: 部分站群站点使用了独立一级域名,但是前台问卷调查等模块无法提交,排查是由于主站启用了https,配置了cookies的Secure属性是true,但是子站的独立一级域名没有使用https,所以浏览器不能写入cooki…

【网站内容安全检测】之3:获取所有外部域名访问后图像

Go语言调用Chrome浏览器去进行截图的操作,对电脑的性能要求比较高,所以速度比较有限,但是目前来看这种方式可以最佳的去获取网页加载后的结果。 main.go package mainimport ("context""errors""flag""…

华曦达港股IPO递表,AI Home生态构建智能生活新蓝图

在智能家居逐渐普及的当下,华曦达打造的AI Home生态为用户提供了更智能、便捷的生活解决方案,在行业中展现出独特优势。 华曦达AI Home生态由AI Home系统平台、AI Home基础设施、AI Home设备以及可连接外部设备的开放式设备矩阵构成,是一个开…

java+vue+SpringBoo智慧农业专家远程指导系统(程序+数据库+报告+部署教程+答辩指导)

源代码数据库LW文档(1万字以上)开题报告答辩稿ppt部署教程代码讲解代码时间修改工具 技术实现 开发语言:后端:Java 前端:vue框架:springboot数据库:mysql 开发工具 JDK版本:JDK1.…

免费AI助手工具深度测评:Claude4本地化部署与实战应用指南

免费AI助手工具深度测评:Claude4本地化部署与实战应用指南 AI无限对话免费Rovo工具Claude4碾压cursor和augment 前言 在AI工具日益普及的今天,大多数高质量的AI助手都需要付费订阅或有使用限制。然而,最近发现了一款基于Claude 4的免费AI助手…

MCP浏览器工具:playwright、chrome-mcp

参考: https://github.com/microsoft/playwright-mcp https://github.com/hangwin/mcp-chrome chrome-mcp安装需要额外安装成浏览器插件 用cherrystudio v1.4.5测试 mcp配置: "chrome-mcp-server": {"name": "chrome-mcp-serve…

水利水电安全员考试不同等级的考试内容有哪些区别?

水利水电安全员考试一般分为企业主要负责人(A 类)、项目负责人(B 类)和专职安全生产管理人员(C 类)三个等级。不同等级的考试内容都包括安全生产知识和管理能力两部分,但具体的侧重点有所不同。…

关于USB模式的一些内容(附USB接口颜色释义图)

今天在处理工作中的事情的时候,突然有个产品的小伙伴来问关于USB的事情,顺便给她简单说了下。USB接口模式主要包括以下几种:Host(主机模式)、Device(设备模式)、OTG(On-The-Go),以及较少使用的Accessory模式。以下是对这些模式的详细说明、区别差异及应用场景: 1. H…

React中的ErrorBoundary

文章目录 前言✅ 一、使用类组件实现 ErrorBoundary(官方推荐方式)用法示例: ✅ 二、用函数组件实现 ErrorBoundary(借助 Hook react-error-boundary 库)1. 安装 react-error-boundary2. 使用 ErrorBoundary 组件&…

历年西北工业大学计算机保研上机真题

西北工业大学计算机保研上机真题 在线测评链接:https://pgcode.cn/problem 海伦公式求面积 题目描述 给定三角形的三条边长 a a a, b b b, c c c,先判断这三条边是否能构成一个三角形。 如果不能构成三角形,输出 N a N NaN NaN&#…

扫地机产品认证--黑名单制裁公司能否拿到美国产品准入许可(FCC认证)

扫地机产品认证–黑名单制裁公司能否拿到美国产品准入许可(FCC认证) 文章目录 扫地机产品认证--黑名单制裁公司能否拿到美国产品准入许可(FCC认证)⚠️ **一、核心限制规则**📋 **二、企业需满足的额外条件**🛡️ **三、黑名单企业的应对可能性**💎 **四、总结**产品认证…

数据结构复习2

第二章 线性表 2.1线性表的定义和基本操作 线性表:一种逻辑结构,表示数据元素之间的一对一线性关系(如数组、链表、栈、队列等)。 2.1.1线性表的定义 线性表是具有相同数据类型的n(n>0)个数据元素的有限序列。 (其中n为表长…

空间转录组benchmark 相关 读完scGPT spatial 和 空间单细胞基因乳房细胞数据集文章之后

文章目录 ✅ 空间转录组测序方式总体划分🧬 成像型空间转录组(Imaging-based ST)原理:技术代表 & 特点:优点:局限: 🧬 测序型空间转录组(Sequencing-based ST&#x…

清理华为云服务器内存使用率

这里写自定义目录标题 一、正确终止进程:不要带尖括号二、看清楚谁“真吃”了内存三、临时清掉缓存(谨慎用)四、长期优化1. 给系统加个 Swap2. 调整 MySQL 内存配置3. 水平/垂直扩容4. 告警 总结与下一步 华为云的“内存使用率”默…

Go 语言中的 package 和 go modules

1、package 的定义和导入 在任何大型软件项目中,代码的组织和管理都是至关重要的。Go 语言通过 包(Package) 的概念来解决这个问题,它不仅是代码组织的基础,也是代码复用的关键。本文将深入探讨 Go 语言中包的定义、规…

C#语言入门-task4 :C#语言的高级应用

C# 作为一门现代化、面向对象的编程语言,在企业级应用、游戏开发、移动应用、云计算等领域有着广泛的应用。以下是 C# 语言的一些高级应用场景和技术方向: 一、高级语言特性与编程范式 1. 异步编程(Async/Await) 应用场景&…

FastAPI vs Flask vs Django:Python Web框架全面对比

Python 作为最受欢迎的编程语言之一,其 Web 开发生态极为丰富。FastAPI、Flask 和 Django 是当前主流的三大 Python Web 框架,各有千秋。本文将从架构设计、开发效率、性能表现、生态支持、适用场景等方面,全面对比这三大框架,帮助…

如何从零开始掌握Pandas的DataFrame使用

视频演示 如何通过实例学习Pandas DataFrame的创建与数据访问 🧩 理解 Pandas DataFrame:数据分析的核心结构 Pandas 是 Python 中用于数据分析与处理的主力库,而 DataFrame 是 Pandas 最常用的二维表格数据结构。我们可以将其想象成一个 Ex…

LaTeX下载与实践入门指南

LaTeX下载与实践入门指南 简单来说,LaTeX 是一种以代码驱动的排版系统。和 Word 那种所见即所得(WYSIWYG)的编辑方式不同,LaTeX 更像是你写代码、它帮你生成精美排版。你写的不是文字排版,而是一种“结构化内容&#…

Java--数组

目录 1.1 介绍:数据可以存放多个同一类型的数据。 1.2 排序: 冒泡排序法: 1.3 查找 1. 顺序查找 2. 二分查找 二维数组: 杨辉三角: 1.1 介绍:数据可以存放多个同一类型的数据。 数组的引用&#xf…