dockerfile run chown不生效
时间: 2023-06-27 19:02:17 浏览: 96
如果在 Dockerfile 中使用 chown 命令更改文件或目录的所有者和/或组时,可能会发现该命令不起作用。这是因为 Dockerfile 中的 chown 命令只是在构建镜像时运行,而不是在容器启动时运行。因此,如果您在构建镜像时使用 chown 命令更改了文件或目录的所有者和/或组,则在容器启动时,这些更改将不会生效。
要解决这个问题,您可以在 Dockerfile 中添加一个 shell 脚本,该脚本将在启动容器时运行,并在此脚本中使用 chown 命令更改文件或目录的所有者和/或组。例如,您可以在 Dockerfile 中添加以下内容:
```
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
```
然后,创建一个 entrypoint.sh 脚本,该脚本将在容器启动时运行,并使用 chown 命令更改文件或目录的所有者和/或组。例如,您可以在 entrypoint.sh 中添加以下内容:
```
#!/bin/sh
chown -R myuser:mygroup /path/to/folder
exec "$@"
```
注意,这里的 myuser 和 mygroup 应该是您想要更改的文件或目录的所有者和组。同时,在 entrypoint.sh 中的最后,使用 exec "$@" 命令来执行容器中的任何其他命令或进程。
最后,在构建 Docker 镜像时,使用以下命令来构建:
```
docker build -t myimage .
```
然后,运行容器时,使用以下命令:
```
docker run -it myimage
```
此时,entrypoint.sh 脚本将在容器启动时运行,并使用 chown 命令更改文件或目录的所有者和/或组。