jdk 镜像推荐构建

jdk镜像构建

jdk镜像构建

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

相关内容