构建自己的docker基础镜像

构建自己的docker基础镜像

构建一个完全定制的基础镜像意味着您需要从一个非常小的镜像(例如 scratch 镜像)开始,然后逐步添加您需要的所有内容。scratch 镜像是一个空白的基础镜像,可以用来创建高度定制的容器环境。

创建一个基础镜像

构建debian基础镜像

  1. 准备根文件系统

要构建一个基础镜像,您需要一个最小的根文件系统。这可以通过使用 debootstrap 等工具来创建。debootstrap是debian/ubuntu下的一个工具,用来构建一套基本的根文件系统,其生成的目录符合Linux文件系统标准(FHS),即包含了/boot、/etc、/bin、/usr等等目录,但它比发行版本的Linux体积小很多,当然功能也没那么强大,因此,只能说是“基本的系统”。

首先,在一个干净的 Linux 环境中,安装 debootstrap

sudo apt-get update
sudo apt-get install -y debootstrap

然后,使用 debootstrap 创建一个最小的 Debian 根文件系统:

# 创建Debian rootfs,测试使用官方源较慢,可以改为国内源https://mirrors.aliyun.com/debian
root@ubuntu:~/mydebian# sudo debootstrap --arch=amd64 stable ./my-rootfs http://deb.debian.org/debian/

root@ubuntu:~/mydebian# du -sh ./my-rootfs/
360M    ./my-rootfs/

root@ubuntu:~/mydebian# ls ./my-rootfs/
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

# 设置阿里云镜像源,对rootfs下面的镜像源文件进行修改
root@ubuntu:~/mydebian# cat my-rootfs/etc/apt/sources.list
deb http://mirrors.aliyun.com/debian/ stable main contrib non-free
deb http://mirrors.aliyun.com/debian/ stable-updates main contrib non-free
deb http://mirrors.aliyun.com/debian/ stable-backports main contrib non-free
deb http://mirrors.aliyun.com/debian-security stable-security main contrib non-free

这将会在当前目录下创建一个名为 my-rootfs 的目录,其中包含了最小的 Debian 文件系统。

说明:

  1. debootstrap支持的发行版本可以在/usr/share/debootstrap/scripts/查看,而各发行版代号可以到http://en.wikipedia.org/wiki/List_of_Ubuntu_releases查看。

  2. 如果是在arm环境下构建容器镜像,ARMv8 架构设置--arch=arm64ARMv7架构设置--arch=armhf,同时镜像源指向对应架构的源地址。例如:

sudo debootstrap --verbose --arch=arm64 xenial ./ubuntu-rootfs https://mirrors.aliyun.com/ubuntu-ports/

  1. 创建 Dockerfile

    创建一个 Dockerfile,并使用 scratch 作为基础镜像,然后将您的根文件系统复制到其中。

# 使用 scratch 作为基础镜像
FROM scratch

# 复制最小的 Debian 根文件系统到镜像中
COPY ./my-rootfs/ /

# 设置环境变量
ENV DEBIAN_FRONTEND=noninteractive

# 设置时区
RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone

# 安装基本工具
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    ca-certificates \
    curl \
    vim \
    git \
    wget \
    net-tools \
    iputils-ping \
    dnsutils \
    unzip \
    && rm -rf /var/lib/apt/lists/*

# 设置工作目录
WORKDIR /root

# 设置镜像作者信息
LABEL maintainer="your-email@example.com"

说明:

  1. scratch是Docker保留镜像,镜像名字避免使用该保留字,使用FROM scratch表示构建镜像中的第一个文件层。
  1. 构建基础镜像

    Dockerfile 所在目录下,使用以下命令构建镜像:

docker build -t mybasedebian:12.0 .

# 构建成功后查看镜像列表
root@ubuntu:~/mydebian# docker images
REPOSITORY                 TAG               IMAGE ID       CREATED         SIZE
mybasedebian               12.0              8b7f616a56d2   2 minutes ago   612MB

构建ubuntu基础镜像

这次我以构建一个ubuntu amd64架构xenial版本的容器镜像为例:

sudo debootstrap --verbose --arch=amd64 xenial ./ubuntu-rootfs https://mirrors.aliyun.com/ubuntu/

编写Dockerfile

# 使用 scratch 作为基础镜像
FROM scratch

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lldhsds

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值