Docker基础教程(八十)docker创建镜像之从Dockerfile构建镜像:Dockerfile魔法书:一键打包你的代码理想国!

引言:为什么需要Dockerfile?

在云原生时代,Docker已经成为应用部署的标准工具。但很多人依然手动创建容器,就像用火柴点火而不是用打火机——能用的工具不用,非要原始操作!

手动创建镜像的流程大致是这样:运行一个基础容器 → 进入容器执行命令 → 保存更改为新镜像。这种方法不仅繁琐,更致命的是缺乏可重复性和透明度。

而Dockerfile的出现彻底改变了游戏规则。这个文本文件包含了一系列指令,就像烹饪食谱一样,告诉Docker如何一步步构建镜像。它让镜像构建过程可以版本化、可审查、可重复,是DevOps文化的完美体现。

一、Dockerfile核心指令详解

1. FROM:奠定基础

每个Dockerfile都必须以FROM指令开头,它指定了基础镜像:

FROM ubuntu:20.04

选择基础镜像时,考虑以下几点:

  • 官方镜像优先:通常更安全、维护更好
  • 版本明确:避免使用latest标签,防止不可预期的变化
  • 镜像大小:Alpine Linux等小型基础镜像可以显著减小最终镜像大小

2. RUN:执行命令

RUN指令用于执行命令并创建新的镜像层:

# shell格式(默认在/bin/sh -c下执行)
RUN apt-get update && apt-get install -y python3

# exec格式(直接执行,不启动shell)
RUN ["apt-get", "update"]
RUN ["apt-get", "install", "-y", "python3"]

最佳实践:将多个命令合并到一个RUN指令中,减少镜像层数,提高构建效率。

3. COPY vs ADD:文件添加的艺术

两者都用于将文件从构建上下文复制到镜像中,但有重要区别:

# 复制本地文件到镜像
COPY ./app.py /app/

# 复制并解压压缩文件(ADD的独有功能)
ADD ./package.tar.gz /app/

# 复制远程URL文件(ADD的独有功能,但不推荐使用)
ADD http://example.com/file.txt /app/

一般建议优先使用COPY,除非需要ADD的自动解压功能。ADD的URL下载功能实际上并不实用,因为无法在构建过程中处理下载失败或删除临时文件。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值