首页 > 解决方案 > 为什么运行时会出现 chown:在 `/usr/local/hadoop/logs' 之后缺少操作数

问题描述

在此处输入图像描述Dockerfile 构建成功,但是,我使用了 ocker run -it --hostname hadoop1 --name hadoop hadoop_v1.0 并且尝试了 `chown --help' 以获取更多信息,我检查了 /usr 下的所有日志/local/hadoop/logs都报错了,容器也可以正常运行

这是一个用于构建 hadoop 的 dockerfile。dockerfile 中使用 chown 命令的地方如下:enter image description here

RUN chmod 600 ${ROOT_HOME}/.ssh/config && \
    chown root:root ${ROOT_HOME}/.ssh/config && \
    chown root:root /etc/bootstrap.sh && \
    chmod 700 /etc/bootstrap.sh && \
    chmod +x $HADOOP_HOME/etc/hadoop/*-env.sh && \
    adduser hdpuser && \
    echo 'hdpuser:hdppassword' | chpasswd && \
    usermod -aG wheel hdpuser && \
    echo "%wheel        ALL=(ALL)       ALL" >> /etc/sudoers

标签: dockerfile

解决方案


这是因为 USER env var 未在使用 sbin/hadoop-daemon.sh 脚本的 docker 中设置。但是对于 hadoop,您应该将 env var HADOOP_IDENT_STRING 设置为所需的用户,即在容器内执行进程的用户。

查看Docker 为什么没有设置 $USER 环境变量


推荐阅读