Docker镜像基本概念与构建指南

一、Docker镜像基本概念
Docker镜像是容器运行的基础,包含应用程序及其运行所需的文件系统、依赖库、环境变量和配置。其核心特性包括:

只读性:镜像本身不可修改,容器运行时在镜像层之上创建可写层。
分层存储:由多个只读层(Layer)叠加组成,每层对应Dockerfile中的一个指令。
可移植性:镜像通过注册中心(如Docker Hub)实现跨环境部署。
二、镜像的分层结构
1. 分层机制原理
联合文件系统(UnionFS):将多个目录(层)挂载到同一虚拟目录,上层文件覆盖下层同名文件。
层复用性:相同层的镜像可共享存储,减少磁盘占用。例如,基于ubuntu:22.04的多个镜像共享基础层。
写时复制(Copy-on-Write):容器修改文件时,仅复制目标层到可写层,不影响原始镜像。
2. 典型分层示例

FROM ubuntu:22.04 # 基础镜像层(Layer 1)

RUN apt-get update # 软件源更新层(Layer 2)

COPY app /opt/app # 文件复制层(Layer 3)

CMD [“/opt/app/start.sh”] # 启动命令层(Layer 4)

每层生成唯一哈希值,修改任意指令会重建后续所有层。

三、构建镜像的详细步骤
1. 编写Dockerfile

# 指定基础镜像

FROM python:3.9-slim

# 设置工作目录

WORKDIR /app

# 安装依赖

COPY requirements.txt .

RUN pip install –no-cache-dir -r requirements.txt

# 复制应用代码

COPY . .

# 暴露端口

EXPOSE 8000

# 启动命令

CMD [“gunicorn”, “app:app”, “–bind”, “0.0.0.0:8000”]

2. 构建镜像

# -t指定镜像标签,.表示构建上下文路径

docker build -t myapp:v1 .

# 查看构建过程日志(显示分层详情)

docker build –progress=plain -t myapp:v1 .

3. 验证与优化
检查分层结构:

history myapp:v1
多阶段构建(减少镜像体积):

构建阶段

FROM golang:1.20 AS builder

WORKDIR /src

COPY . .

RUN go build -o /app

运行阶段

FROM alpine:3.18

COPY –from=builder /app /app

CMD [“/app”]
四、最佳实践
精简基础镜像:优先选择Alpine、Distroless等轻量镜像。
合并指令:减少层数,例如将多个RUN合并:

apt-get update && \

apt-get install -y curl && \

rm -rf /var/lib/apt/lists/*
使用.dockerignore:排除无关文件(如node_modules、.git)。
定期清理:删除无用镜像和中间层:

system prune -a

欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!

66源码网 » Docker镜像基本概念与构建指南

提供最优质的资源集合

立即查看 了解详情