插件窝 干货文章 docker怎么创建基础镜像

docker怎么创建基础镜像

镜像 创建 Docker 基础 434    来源:    2025-04-06

Docker 创建基础镜像的方法

创建 Docker 基础镜像有几种主要方法,下面我将详细介绍每种方法:

1. 从零开始创建 (scratch 镜像)

这是最基础的方法,创建一个完全空白的镜像:

FROM scratch
ADD hello /
CMD ["/hello"]
  1. 先编译一个静态链接的二进制文件 (例如用 Go 语言)
  2. 创建上述 Dockerfile
  3. 构建镜像:docker build -t my-base-image .

2. 从现有镜像开始

更常见的方法是使用官方基础镜像:

FROM alpine:latest
# 或者 FROM ubuntu:20.04
# 或者 FROM centos:7

然后添加你需要的组件:

FROM alpine:latest
RUN apk add --no-cache bash curl

3. 使用 docker commit 创建

基于现有容器创建镜像:

# 启动一个基础容器
docker run -it ubuntu:20.04 /bin/bash

# 在容器内进行修改后
exit

# 提交为新的镜像
docker commit <container-id> my-new-image

4. 使用工具创建

使用 debootstrap (适用于 Debian/Ubuntu)

# 安装工具
sudo apt-get install debootstrap

# 创建基础文件系统
sudo debootstrap focal focal > /dev/null

# 打包为镜像
sudo tar -C focal -c . | docker import - my-ubuntu-base

使用 rinse (适用于 CentOS/RHEL)

# 安装工具
sudo apt-get install rinse

# 创建基础文件系统
sudo rinse --distribution centos-7 --directory centos7

# 打包为镜像
sudo tar -C centos7 -c . | docker import - my-centos-base

5. 使用 Buildah 工具

# 创建空镜像
buildah from scratch

# 获取挂载点
mountpoint=$(buildah mount working-container)

# 添加文件系统内容
dnf install --installroot $mountpoint bash coreutils --releasever 8 --setopt install_weak_deps=false -y

# 配置
buildah config --cmd /bin/bash working-container

# 提交镜像
buildah commit working-container my-base-image

最佳实践建议

  1. 尽量使用官方基础镜像
  2. 保持镜像尽可能小 (Alpine 是个好选择)
  3. 使用多阶段构建减少最终镜像大小
  4. 合并 RUN 命令减少镜像层数
  5. 清理不必要的缓存和临时文件

验证镜像

创建后可以验证:

docker run -it my-base-image /bin/sh

希望这些方法能帮助你创建所需的 Docker 基础镜像。根据你的具体需求选择最适合的方法。