这是我的Dockerfile的一部分:
RUN mkdir /data
RUN chown www-data:www-data /data
RUN chmod 664 /data
VOLUME ["/data"]
我使用以下命令创建图像:
docker build -t webapp .
我这样运行:
docker run -d -p 80:80 -v /home/user/data:/data webapp
但是在我的主机用户目录中,data
目录的创建方式如下:
drwxr-xr-x 2 root root 4,0K avril 28 21:52 data
在图片中(docker exec -it CONTAINER_ID bash)我有:
drwxr-xr-x 2 root root 4096 Apr 28 19:52 data
所以从Dockerfile中忽略命令 Web docker应用程序如何才能获得在主机目录上写入的权限?
答案 0 :(得分:1)
所以你正在建立一个图像,设置chmods,这一切都很酷。 但是然后使用-v选项运行容器,这意味着/ data将替换为已安装的卷。此时,将忽略构建映像中的所有文件和权限。您可以通过运行不带-v选项的容器来检查这一点。解决方案是创建入口点脚本(在Dockerfile中使用ENTRYPOINT或CMD命令),它将首先修复权限,然后为您的映像运行原始命令。