| 1
2
 | FROM openjdk:8-jdk
CMD ["java", "-version"]
 | 
 
| 1
 | nerdctl --debug build -t openjdk:v8 .
 | 
 
| 1
2
 | FROM openjdk:11-jdk-slim
CMD ["java", "-version"]
 | 
 
| 1
 | nerdctl --debug build -t openjdk:v11 .
 | 
 
| 1
2
 | FROM openjdk:17-jdk-slim
CMD ["java", "-version"]
 | 
 
| 1
 | nerdctl --debug build -t openjdk:v17 .
 | 
 
注意: Oracle Java Jdk 各版本的使用授权许可。
这里使用 containerd 配合使用的镜像构建工具 buildkitd, 使用 nerdctl build 配置 Buildkit
注意: Buildkit 在 OCI worker 模式下是由 Buildkit 自己来管理容器和镜像的,不能使用 nerdctl 操作的镜像。
配置 Buildkit 文件 /etc/buildkit/buildkitd.toml 启用 containerd worker。
| 1
2
3
4
5
6
7
8
 | [worker.oci]
  enabled = false
[worker.containerd]
  enabled = true
  # namespace should be "k8s.io" for Kubernetes (including Rancher Desktop)
  # blank default namespace is 'buildkit' not 'default'
  namespace = "default"
 | 
 
重启 buildkitd 服务
| 1
 | systemctl daemon-reload && systemctl restart buildkitd
 | 
 
测试构建 Dockerfile
| 1
2
 | FROM ubuntu:24.04
CMD ["uname", "-a"]
 | 
 
构建命令
| 1
2
3
4
 | # 先用 nerdctl 拉取镜像
nerdctl pull ubuntu:24.04
# 在构建使用本地镜像时时
nerdctl --debug build -t ubuntu-24.04:v1 .
 | 
 
ubuntu 24.04 国内阿里源:ubuntu.sources
| 1
2
3
4
5
 | Types: deb
URIs: http://mirrors.aliyun.com/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
 | 
 
构建 Dockerfile
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 | FROM ubuntu:24.04
ENV LANG=en_US.UTF-8
COPY ./ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources
RUN apt-get update -y \ 
    && apt-get upgrade -y \
    && apt-get install -y tzdata curl vim iputils-ping locales \
    && sed -i 's/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/ ; s/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \
    && locale-gen \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
ADD jdk-8u421-linux-x64.tar.gz /usr/local/src/
ENV JAVA_HOME=/usr/local/src/jdk1.8.0_421
ENV CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/jre/lib/rt.jar
ENV PATH=${PATH}:${JAVA_HOME}/bin
WORKDIR /opt/
CMD ["java", "-version"]
 | 
 
构建命令,构建后镜像大小在 216.1 MiB 左右
| 1
 | nerdctl --debug build -t jdk-8u421-ubuntu-24.04:v1 .
 | 
 
测试运行
| 1
 | nerdctl run -it --rm jdk-8u421-ubuntu-24.04:v1 bash
 | 
 
debian 国内镜像源:debian 12 镜像源选择,debian 12 源
debian.sources -> /etc/apt/sources.list.d/debian.sources
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 | Types: deb
URIs: http://mirrors.ustc.edu.cn/debian
Suites: bookworm bookworm-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
URIs: http://mirrors.ustc.edu.cn/debian-security
Suites: bookworm-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
 | 
 
构建 Dockerfile
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 | FROM debian:12.10
ENV LANG=en_US.UTF-8
ENV TERM=xterm
COPY ./debian.sources /etc/apt/sources.list.d/debian.sources
RUN apt-get update -y \ 
    && apt-get upgrade -y \
    && apt-get install -y curl vim iputils-ping locales procps htop \
    && sed -i 's/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/ ; s/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \
    && locale-gen \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
ADD jdk-8u421-linux-x64.tar.gz /usr/local/src/
ENV JAVA_HOME=/usr/local/src/jdk1.8.0_421
ENV CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/jre/lib/rt.jar
ENV PATH=${PATH}:${JAVA_HOME}/bin
WORKDIR /opt/
CMD ["java", "-version"]
 | 
 
构建镜像,大小在 217.8 MiB 左右
| 1
 | nerdctl --debug build -t jdk-8u421-debian-12.10:v1 .
 | 
 
测试运行
| 1
 | nerdctl run -it --rm jdk-8u421-debian-12.10:v1 bash
 | 
 
Centos-7.9.2009 国内阿里源:centos7-ali.repo
| 1
2
 | curl -o centos7.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' centos7.repo
 | 
 
构建 Dockerfile
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 | FROM centos:7.9.2009
ENV LANG=en_US.UTF-8
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ADD jdk-8u421-linux-x64.tar.gz /usr/local/src/
ENV JAVA_HOME=/usr/local/src/jdk1.8.0_421
ENV CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/jre/lib/rt.jar
ENV PATH=${PATH}:${JAVA_HOME}/bin
WORKDIR /opt/
CMD ["java", "-version"]
 | 
 
构建镜像,大小在 214.4 MiB 左右
| 1
 | nerdctl --debug build -t jdk-8u421-centos-7.9.2009:v1 .
 | 
 
测试运行
| 1
 | nerdctl run -it --rm jdk-8u421-centos-7.9.2009:v1 bash
 |