Docker 卷中的权限
Permissions in Docker volume
我正在为 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 构建命令:
sudo docker build -t mycontainer .
和 docker 运行 命令:
sudo docker run -v data_storage:/home/user01/.client -p 3008:3000 -itd mycontainer
我遇到的问题是 Python 脚本会创建文件夹:/home/user01/.client 并且会在其中复制一些文件。这总是工作得很好。但是现在我想要那些文件,它们是数据文件,在一个卷中用于备份 porpuses。当我映射我的卷时,我的权限被拒绝,因此 python 脚本无法再写入。
所以在我的 docker 文件的末尾,这条指令与 docker 运行 命令中的映射相结合,给我拒绝的权限:
VOLUME /data_storage
关于如何解决这个问题有什么建议吗? "user01" 需要更多权限吗?
谢谢
我能够通过从 docker 文件中删除 "volume" 命令并在执行 docker 运行 时进行映射来解决我的问题:
sudo docker 运行 -v data_storage:/home/user01/.client -p 3008:3000 -itd mycontainer
我正在为 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 构建命令:
sudo docker build -t mycontainer .
和 docker 运行 命令:
sudo docker run -v data_storage:/home/user01/.client -p 3008:3000 -itd mycontainer
我遇到的问题是 Python 脚本会创建文件夹:/home/user01/.client 并且会在其中复制一些文件。这总是工作得很好。但是现在我想要那些文件,它们是数据文件,在一个卷中用于备份 porpuses。当我映射我的卷时,我的权限被拒绝,因此 python 脚本无法再写入。
所以在我的 docker 文件的末尾,这条指令与 docker 运行 命令中的映射相结合,给我拒绝的权限:
VOLUME /data_storage
关于如何解决这个问题有什么建议吗? "user01" 需要更多权限吗? 谢谢
我能够通过从 docker 文件中删除 "volume" 命令并在执行 docker 运行 时进行映射来解决我的问题:
sudo docker 运行 -v data_storage:/home/user01/.client -p 3008:3000 -itd mycontainer