基于ubuntu22构建spark镜像 —— 筑梦之路
制作基础镜像openjdk21
要求含有openjdk21、python3.12版本
FROM ubuntu:22.04
ENV LANG=C.UTF8 \TZ=Asia/Shanghai \DEBIAN_FRONTEND=noninteractive \JVM_XMX=1G \JVM_XMS=1G \JVM_DEBUG=n 
USER root
WORKDIR /opt
RUN sed -i s@/archive.ubuntu.com/@/repo.huaweicloud.com/@g /etc/apt/sources.list &&  \sed -i s@/security.ubuntu.com/@/repo.huaweicloud.com/@g /etc/apt/sources.list &&  \sed -i s@/ports.ubuntu.com/@/repo.huaweicloud.com/@g /etc/apt/sources.list &&  \sed -i -e 's/^APT/# APT/' -e 's/^DPkg/# DPkg/' /etc/apt/apt.conf.d/docker-clean && \apt-get clean all && \apt-get update && apt-get dist-upgrade -y && \apt-get install -y openjdk-21-jdk-headless fonts-wqy-microhei curl vim bash wget tzdata build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev libbz2-dev pkg-config && \wget https://www.python.org/ftp/python/3.12.12/Python-3.12.12.tgz && \tar -zxf Python-3.12.12.tgz && \cd Python-3.12.12 && \./configure --enable-optimizations --prefix=/usr/local/python3.12 && \make -j$(nproc) && make install && \ln -sf /usr/local/python3.12/bin/python3 /usr/bin/python3 && \ln -sf /usr/local/python3.12/bin/pip3 /usr/bin/pip3 && \python3 -m pip install --upgrade pip && \ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone && \apt-get install -y language-pack-zh-hans && locale-gen zh_CN.UTF-8 && \apt-get clean all && apt-get autoremove -y \&& ln -sf /bin/bash /bin/sh \&& rm -rf /var/cache/apt/* /var/lib/apt/lists/* /opt/*
制作spark镜像
wget https://dlcdn.apache.org/spark/spark-4.0.1/spark-4.0.1-bin-hadoop3.tgztar -zxf spark-4.0.1-bin-hadoop3.tgzcd spark-4.0.1-bin-hadoop3# 改造Dockerfilecat  kubernetes/dockerfiles/spark/Dockerfile | grep -v ^$ | grep -v ^#
FROM openjdk-21:py3.12-ub22-251030
LABEL org.opencontainers.image.authors="Apache Spark project <dev@spark.apache.org>"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.ref.name="Apache Spark Scala/Java Image"
LABEL org.opencontainers.image.version=""
RUN set -ex && \apt-get update && \ln -s /lib /lib64 && \apt install -y bash tini libc6 libpam-modules krb5-user libnss3 procps net-tools logrotate libssl-dev && \mkdir -p /opt/spark && \mkdir -p /opt/spark/examples && \mkdir -p /opt/spark/work-dir && \touch /opt/spark/RELEASE && \rm /bin/sh && \ln -sv /bin/bash /bin/sh && \rm -rf /var/cache/apt/* && rm -rf /var/lib/apt/lists/*
COPY jars /opt/spark/jars
COPY hive-jackso[n] /opt/spark/hive-jackson
COPY RELEAS[E] /opt/spark/RELEASE
COPY bin /opt/spark/bin
COPY sbin /opt/spark/sbin
COPY kubernetes/dockerfiles/spark/entrypoint.sh /opt/
COPY kubernetes/dockerfiles/spark/decom.sh /opt/
COPY examples /opt/spark/examples
RUN ln -s $(basename /opt/spark/examples/jars/spark-examples_*.jar) /opt/spark/examples/jars/spark-examples.jar
COPY kubernetes/tests /opt/spark/tests
COPY data /opt/spark/data
ENV SPARK_HOME=/opt/spark
WORKDIR /opt/spark/work-dir
RUN chmod g+w /opt/spark/work-dir && chmod a+x /opt/decom.sh
ENTRYPOINT [ "/opt/entrypoint.sh" ]
USER root此处可构建多架构镜像,其他步骤略。
