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
|