【问题标题】:ADD command in Dockerfile download jars as root user以 root 用户身份在 Dockerfile 下载 jar 中添加命令
【发布时间】:2020-10-26 16:34:30
【问题描述】:

我正在寻找在我的 docker 映像的 docker 构建期间,下载的 jar 包不能被定义的 USER 使用,因为它们具有 root 专有
奇怪的是我在下载所有jar文件之前都放了USER,所以我认为这个命令是作为USER 65534而不是root执行的。

    FROM myimage:1.0
    
    USER 65534
    
    ADD [ \
    "https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.1/scala-library-2.13.1.jar", \
    "https://repo1.maven.org/maven2/com/typesafe/akka/akka-actor_2.13/2.6.5/akka-actor_2.13-2.6.5.jar", \
    "https://repo1.maven.org/maven2/com/typesafe/akka/akka-osgi_2.13/2.6.5/akka-osgi_2.13-2.6.5.jar", \
    "https://repo1.maven.org/maven2/com/typesafe/akka/akka-slf4j_2.13/2.6.5/akka-slf4j_2.13-2.6.5.jar", \
    "https://repo1.maven.org/maven2/com/typesafe/akka/akka-stream_2.13/2.6.5/akka-stream_2.13-2.6.5.jar",  \"
/tmp/myfolder/lib/" ]

然后查看容器内部,我可以看到这些包是 root 并且不能从定义的 USER 中使用。

 ls -alt 
-rw------- 1 root root 2433561 Apr 30 09:09 akka-remote_2.13-2.6.5.jar
-rw------- 1 root root 4665057 Apr 30 09:06 akka-stream_2.13-2.6.5.jar
-rw------- 1 root root   17078 Apr 30 09:05 akka-slf4j_2.13-2.6.5.jar
-rw------- 1 root root   25253 Apr 30 09:04 akka-osgi_2.13-2.6.5.jar
-rw------- 1 root root 3598880 Apr 30 09:02 akka-actor_2.13-2.6.5.jar

可能是什么问题?

【问题讨论】:

    标签: docker dockerfile docker-build


    【解决方案1】:

    USER 不会影响 ADD 或 COPY,因此 Docker 在这些命令中添加了chown 标志。你有更多信息在这里https://docs.docker.com/engine/reference/builder/#add

    因此,您可以在 ADD 或 COPY 期间执行类似操作来更改所有权。

    ADD [--chown=<user>:<group>] <src>... <dest>
    ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]
    

    同样来自 USER https://docs.docker.com/engine/reference/builder/#user 的文档:

    USER 指令设置用户名(或 UID)和可选的用户组(或 GID),以在运行映像时以及 Dockerfile 中跟随它的任何 RUN、CMD 和 ENTRYPOINT 指令使用。

    所以 USER 仅限于 RUN、CMD 和 ENTRYPOINT 指令。

    【讨论】:

      猜你喜欢
      • 2015-07-07
      • 1970-01-01
      • 2017-05-26
      • 2022-01-07
      • 2022-11-25
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      相关资源
      最近更新 更多