我想扩展docker(postgresql-96-centos7)以添加Java。 我尝试构建下一个dockerfile:
error 17-Jul-2018 18:44:45 18:44:45.846 WARN: [/home/myuser/server/RequestHandler.h:5]: cannot find the sources for '#include <string>'
error 17-Jul-2018 18:44:45 18:44:45.847 WARN: [/home/myuser/server/RequestHandler.h:6]: cannot find the sources for '#include <iostream>'
error 17-Jul-2018 18:44:45 18:44:45.847 WARN: [/home/myuser/server/RequestHandler.h:7]: cannot find the sources for '#include <algorithm>'
error 17-Jul-2018 18:44:45 18:44:45.847 WARN: [/home/myuser/server/RequestHandler.h:8]: cannot find the sources for '#include <memory>'
使用命令:
FROM centos/postgresql-96-centos7
RUN yum update -y && \
yum install -y wget && \
yum install -y java-1.8.0-openjdk && \
yum clean all
# Set environment variables.
ENV HOME /root
# Define working directory.
WORKDIR /root
# Define default command.
CMD ["bash"]
但是有一个错误:
docker image build -t centos_pgs_java .
如何用root用户权限重写dockerfile中的RUN命令?
答案 0 :(得分:0)
根据Dockerfile文档:
USER指令设置用户名(或UID),并可选地设置 运行映像以及任何RUN,CMD时要使用的用户组(或GID) 以及Dockerfile中紧随其后的ENTRYPOINT指令。
因此,您需要将用户更改为root
,执行RUN层,并将用户返回到26
码头工人镜像中定义的centos/postgresql-96-centos7
。
最后的Dockerfile
是:
FROM centos/postgresql-96-centos7
USER root
RUN yum update -y && \
yum install -y wget && \
yum install -y java-1.8.0-openjdk && \
yum clean all
USER 26
# Set environment variables.
ENV HOME /root
# Define working directory.
WORKDIR /root
# Define default command.
CMD ["bash"]