无法在Dockerfile中更改“RUN chmod +x /app-entrypoint.sh”的权限

6
我有以下的Dockerfile文件。
FROM docker.io/bitnami/jasperreports:7-debian-10
COPY custom-entrypoint.sh /app-entrypoint.sh
RUN  chmod +x /app-entrypoint.sh

我正在尝试构建一个类似这样的新图像

docker build -t registry/jasperserver:latest .

我遇到了这个错误。
 => ERROR [3/7] RUN  chmod +x /app-entrypoint.sh                                                                                                                                                                                                                                                                                            0.4s
------                                                                                                                                                                                                                                                                                                                                           
 > [3/7] RUN  chmod +x /app-entrypoint.sh:
#8 0.380 chmod: changing permissions of '/app-entrypoint.sh': Operation not permitted
------
executor failed running [/bin/sh -c chmod +x /app-entrypoint.sh]: exit code: 1

为什么我无法更改/app-entrypoint.sh的权限?

编辑后:

这是docker info命令的输出结果。

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Build with BuildKit (Docker Inc., v0.6.1-docker)
  compose: Docker Compose (Docker Inc., v2.0.0-rc.3)
  scan: Docker Scan (Docker Inc., v0.8.0)

Server:
 Server Version: 20.10.8
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: e25210fe30a0a703442421b0f60afac609f950a3
 runc version: v1.0.1-0-g4144b63
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 5.10.60.1-microsoft-standard-WSL2
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 8
 Total Memory: 15.63GiB
 Name: docker-desktop
 ID: 6IIP:AJPF:HJJU:4J2X:MWJM:YIUH:ZXLZ:XHG5:E7SZ:RYKB:HBSR:RMMU
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/

请描述您的Docker引擎和主机。是否启用了SELinux?使用“docker info”命令更新问题并提供输出结果。 - BMitch
1个回答

10

COPY 步骤会在 / 目录下创建一个以 uid/gid 为 0:0(root:root)的文件,普通用户无法访问。而所选的基础镜像是配置为以 uid 1001 运行。可能最简单的方法是暂时切换回 root 用户来运行该步骤。

FROM docker.io/bitnami/jasperreports:7-debian-10
USER root
COPY custom-entrypoint.sh /app-entrypoint.sh
USER 1001
RUN  chmod +x /app-entrypoint.sh

或者,您可以将脚本复制到用户具有文件正确所有权的目录中。如果不拉取镜像,我怀疑/opt/bitnami/scripts可能具有不同的权限:

FROM docker.io/bitnami/jasperreports:7-debian-10
COPY --chown=1001 custom-entrypoint.sh /opt/bitnami/scripts/app-entrypoint.sh
RUN  chmod +x /opt/bitnami/scripts/app-entrypoint.sh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接