我正在为docker卷上的权限问题而苦恼,我得到的是拒绝写入的访问权限。
这是我的docker文件的一小部分。
FROM ubuntu:18.04
RUN apt-get update && \
apt-get install -y \
apt-transport-https \
build-essential \
ca-certificates \
curl \
vim && \............
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && apt-get install -y nodejs
# Add non-root user
ARG USER=user01
RUN useradd -Um -d /home/$USER -s /bin/bash $USER && \
apt install -y python3-pip && \
pip3 install qrcode[pil]
#Copy that startup.sh into the scripts folder
COPY /scripts/startup.sh /scripts/startup.sh
#Making the startup.sh executable
RUN chmod -v +x /scripts/startup.sh
#Copy node API files
COPY --chown=user1 /node_api/* /home/user1/
USER $USER
WORKDIR /home/$USER
# Expose needed ports
EXPOSE 3000
VOLUME /data_storage
ENTRYPOINT [ "/scripts/startup.sh" ]
还有我的startup.sh的一小部分。
#!/bin/bash
/usr/share/lib/provision.py --enterprise-seed $ENTERPRISE_SEED > config.json
然后是我的docker builds命令。
sudo docker build -t mycontainer .
和docker运行命令。
sudo docker run -v data_storage:/home/user01/.client -p 3008:3000 -itd mycontainer
我的问题是Python脚本会创建一个文件夹 homeuser01.client 然后把一些文件复制到里面去。这一直都很好。但现在我想把这些文件,也就是数据文件,放在一个备份卷里。当我在映射我的卷时,我得到了权限拒绝,所以python脚本不能再写了。
所以在我的docker文件的最后,这个指令和docker运行命令中的映射相结合,给了我权限拒绝。
VOLUME /data_storage
有什么建议可以解决这个问题吗?"user01 "需要更多的权限吗? 谢谢
我可以通过删除docker文件中的 "volume "命令来解决我的问题,只需在执行docker运行时进行映射。
sudo docker run -v data_storage:homeuser01.client -p 3008:3000 -itd mycontainer...