当前位置: 首页 > news >正文

使用Dockerfile定制镜像

镜像的定制实际上就是定制每一层所添加的配置、文件。我们可以把每一层修改、安装、构建操作的命令都写入一个脚本,这个脚本就是 Dockerfile。

Dockerfile是一个文件,其内容包含了一条条的指令,每一条指令构建一层,因此每条指令的内容,就是描述该层应当如何构建。

接下来我们以官方nginx镜像为例,使用Dockerfile来定制。

1、创建目录:
mkdir mynginx
cd mynginx/
2、创建文件:
touch Dockerfile
3、编辑文件:
vim Dockerfile
内容为:
FROM nginx
RUN echo ‘<h 1>Hello, Docker!<h 1>’ /usr/share/nginx/html/index.html
4、保存编辑的文件
5、在Docker文件所在目录执行:
docker build -t nginx:v3 .
6、查看镜像:
docker images
7、运行镜像:
docker run --name mynginx -p 80:80 mynginx:2.0
8、查看容器:
docker ps -a
9、进入容器:
docker exec -it mynginx /bin/bash

其他制作镜像方式

Dockerfile 指令详解

FROM 指定基础镜像
所谓指定镜像,一定是以一个镜像为基础,在其上进行定制。基础镜像是必须指定的,而FROM就是指定基础镜像,因此一个Dockerfile中FROM是必备的指令,并且必须是第一条指令。在Docker Hub上有非常多的高质量的官方镜像,有可以直接拿来使用的服务类的镜像,如nginx、redis、mysql、tomcat等;可以在其中寻找一个最符合我们最终目标的镜像为基础镜像进行定制。
如果没有找到对应服务的镜像,官方镜像中还提供了一些更为基础的操作系统镜像,如ubuntu、bebian、centos、alpine等,这些操作系统的软件库为我们提供了更广阔的扩展空间。

FROM scratch
除了选择现有镜像外,Docker还存在一个特殊镜像,名为scratch。这个镜像是虚拟的概念,并不实际存在,它表示一个空白的镜像。
如果你以scratch为基础镜像的话,意味着你不以任何镜像为基础,接下来所写的指令将作为镜像第一曾开始存在。
对于Linux下静态编译的程序来说,并不需要有操作系统提供运行时支持,所需的一切库都已经在可执行文件里了,因此直接FROM scratch会让镜像体积更加小巧。使用go语言开发的应用很多会使用这种方式来制作镜像,这也是为什么有人认为Go是特别适合容器微服务架构的语言的原因之一。

RUN执行命令
RUN指令是用来执行命令行命令的。由于命令行的强大能力,RUN指令在定制镜像时是最常用的指令之一。其格式有俩种:
shell 格式:RUN<命令>
RUN echo ‘<h 1>Hello,Docker!</h 1>’ > /usr/share/nginx/html/index.html
exec 格式:RUN[“可执行文件”,“参数1”,“参数2”]
RUN tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1
RUN make -C /usr/src/redis
RUN make -C /usr/src/redis install














http://www.cnnetsun.cn/news/3715874.html

相关文章:

  • 课堂录音智能处理系统:语音转写与LLM技术实践
  • 别让客户需求“溜走”了!3步教你精准抓住客户痛点,沟通效率翻倍
  • 计算机毕业设计之HR平台薪酬管理系统的设计与实现
  • 基于证书透明日志与MassDNS的高效子域名发现实战指南
  • Android OTA升级包签名全流程解析:从signapk到设备校验
  • OLAP技术解析:大数据时代的高效决策引擎
  • 从零上手AI编程代理:OpenAI Codex入门与实践指南
  • 计算机浮点数运算处理
  • 什么影响了你的工资?方差分析告诉你
  • 单例模式总结
  • 利用美国教育邮箱低成本获取AI开发工具权限:Dify部署与Claude注册实战指南
  • 2026专业的ai建站机构哪个好,看看有没有你的心头好?
  • 802.11无线权威指南读书笔记(12)直接序列物理层DSSS与HR/DSSS(802.11b)
  • 抖音批量下载工具终极指南:3步轻松保存无水印高清视频
  • 3步GPU显存稳定性终极指南:memtest_vulkan完整教程与最佳实践
  • 物联网设备安全方案:SE050与STM32F410RB硬件集成
  • TEL F17-621561-2 超声波流量计
  • Windows系统MySQL 8.0本地安装配置与连接测试完整指南
  • 医疗压力测绘系统市场发展格局分析及投资战略规划报告2026年版
  • 基于Arduino与LabVIEW的多路数据采集系统设计与实现
  • 丙酮酸激酶(PK)催化机制与 LDH 偶联 NADH 比色检测原理
  • AI客服质检SOP手册(含12类话术违规判定规则+自动打分阈值表)
  • 微服务架构图
  • 终极视频合成指南:ComfyUI-VideoHelperSuite VHS_VideoCombine节点完全解析
  • ssm整合时报错java.lang.ClassNotFoundException:org.springframework.web.bind.MissingMatrixVariableException
  • 使用dplyr高效处理时间序列数据的技巧与实践
  • Linux运维学习路线图:从命令新手到实战工程师的体系化进阶
  • 2026 国产大模型硬核横评|阿里云百炼(通义 Qwen3.7 Max)VS DeepSeek V4-Pro:平台、定价、吞吐、能力、工程落地全方位对比
  • 第三十五周学习生活总结
  • 学工管理系统信息化建设与架构实践