[hadoop docker搭建(一)]OpenJDK8 docker 镜像的构建

目标

构建搭建hadoop所需要的openjdk环境docker镜像

dockerfile

FROM ubuntu:20.04
COPY ./openjdk-8u44-linux-x64.tar.gz /tmp/
RUN /bin/sh -c set -eux; \
    mkdir -p /opt/java/openjdk; \
    tar -zxf /tmp/openjdk-8u44-linux-x64.tar.gz --strip-components=1 -C /opt/java/openjdk/; \
    rm -rf /tmp/openjdk-8u44-linux-x64.tar.gz
ENV JAVA_HOME=/opt/java/openjdk
ENV PATH=$PATH:$JAVA_HOME/bin

注: 宿主机 dockerfile 相同目录下有 openjdk 的包

命令解释

/bin/sh -c set -eux;

  • -c:这是 sh 的一个选项,表示它将执行紧接其后的字符串(即 `“set -eux; …”)作为命令。

  • set 是一个 Shell 内置命令,用来修改 Shell 的行为

  • -e(Exit immediately on error):当脚本中的任何一条命令返回非零状态(即失败)时,立即退出整个脚本。这确保了一旦有命令失败,Dockerfile 构建过程会立刻中断,不会继续执行。

  • -u(Treat unset variables as an error):如果使用了未定义的变量,Shell 会抛出错误并退出。这可以防止使用未定义的变量导致不预期的行为。

  • -x(Print each command before executing it):在执行每一条命令之前,都会将该命令输出到控制台。这有助于调试,方便看到每一步的执行过程。

tar -zxf --strip-components=1

  • --strip-components=1 : 去除解压后的一级目录

注意点

  • COPY不会自动解压, ADD`会自动解压
  • 在Dockerfile中,RUN 指令每执行一次就会生成一层。这也是为什么在Dockerfile中通常推荐将多个命令合并到一个 RUN 指令中,以减少镜像层数,从而提高构建效率和镜像的可移植性。

Build

doker build --no-cache -t name .

  • --no-cache: Docker在构建镜像时不要使用缓存。默认情况下,Docker会尝试使用之前构建过程中创建的层作为缓存,以加速构建过程。这意味着只有当Dockerfile中的指令或文件发生了变化时,才会重新构建那些层。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值