podman通过Dockerfile自定义镜像
使用Dockerfile,podman自定义带vim、ifconfig、openjdk25的rockylinux10镜像
📝 修改后的 Dockerfile
# 1. 选择基础镜像 # 推荐使用官方镜像,也可替换为其他第三方镜像(见下文说明) FROM docker.io/rockylinux/rockylinux:10.0.20250606# 2. 设置维护者信息(可选) LABEL maintainer="wt@example.com"# 3. 设置工作目录 ENV MYPATH /usr/local WORKDIR $MYPATH# 4. 更新包管理器并安装软件 # Rocky Linux 10 使用 dnf 作为包管理器 RUN dnf -y update && \dnf -y install vim net-tools && \dnf clean all #===使用本地压缩包安装openjdk25=== #======方式一、COPY安装====== #COPY openjdk-25.0.2_linux-x64_bin.tar.gz /tmp/ #RUN mkdir -p /usr/local/java && \ # tar -xzf /tmp/openjdk-25.0.2_linux-x64_bin.tar.gz -C /usr/local/java && \ # rm -f /tmp/openjdk-25.0.2_linux-x64_bin.tar.gz && \ # cd /usr/local/java && \ # mv jdk-25.0.2 jdk25 # 假设解压后目录名是 jdk-25.0.2 #ENV JAVA_HOME /usr/local/java/jdk25 #ENV PATH $JAVA_HOME/bin:$PATH #=======方式二、ADD安装======= # 添加本地 JDK 压缩包并自动解压 ADD openjdk-25.0.2_linux-x64_bin.tar.gz /usr/local/java/# 设置 JAVA_HOME,解压后的目录名为 jdk-25.0.2 ENV JAVA_HOME /usr/local/java/jdk-25.0.2 ENV PATH $JAVA_HOME/bin:$PATH # 5. 验证安装(可选) RUN vim --version && \ifconfig --version && \java -version# 6. 容器启动时默认执行的命令 CMD ["/bin/bash"]
🛠️ 构建与运行步骤
-
准备文件
确保openjdk-25.0.2_linux-x64_bin.tar.gz与Dockerfile放在同一目录下。 -
构建镜像
在终端执行:podman build -t rockylinux-java:10.25 .
命令最后的.表示构建上下文为当前目录,因此镜像构建时会包含该压缩包。 -
运行容器
podman run -it --name my-dev rockylinux-java:10.25进入容器后即可使用
vim、ifconfig和java命令。
🔍 关键点说明
-
ADD自动解压:ADD命令会自动识别.tar.gz格式并解压到目标目录,解压后的文件夹名与压缩包内的根目录名一致(通常为jdk-25.0.2),因此我们直接设置JAVA_HOME=/usr/local/java/jdk-25.0.2。 -
避免重复下载:由于使用本地包,整个构建过程不依赖外部源,构建速度更快,且不受
dnf源中 OpenJDK 25 可用性的影响。 -
环境变量持久化:
ENV设置的环境变量在容器运行时依然有效,确保java命令可直接使用。
⚠️ 注意事项
-
压缩包名称:请确保文件名与
Dockerfile中的ADD指令完全一致(包括大小写)。 -
解压后目录名:如果您的 JDK 压缩包解压后的目录名不是
jdk-25.0.2(比如带有其他后缀),请根据实际情况修改JAVA_HOME的路径。进入容器后可通过ls /usr/local/java/确认目录名,再调整 Dockerfile 中的ENV JAVA_HOME。 -
构建上下文大小:JDK 压缩包较大(约 150MB+),构建时会完整复制到镜像中,请确保磁盘空间充足。
如果后续需要调整 JDK 版本,只需替换压缩包并相应修改 JAVA_HOME 路径即可。
