我有一个带python和已安装卷的docker容器。该卷除其他外,还包含python脚本和csv。我将csv复制到该卷内的子目录中。它正在工作,但是文件具有root所有权,并且已被锁定,因此无法使用。我需要一个解锁的文件。
在docker之外,python脚本执行此操作,创建一个未锁定的文件,而没有任何权限问题。我尝试更改chmod。但这不起作用。
Dockerfile:
FROM python:3.5
ADD entrypoint.sh entrypoint.sh
#RUN chmod 755 entrypoint.sh Also did not work
RUN chmod 777 entrypoint.sh
ENTRYPOINT ./entrypoint.sh
入口点:
cd volume
python copytest.py
copytest.py
import shutil
src = 'df_gent.csv'
dst = 'gent_copy.csv'
shutil.copy2(src, dst)
docker命令:
sudo docker build -t copytest .
docker run --name copy_test -v /home/user/Desktop/copytest-docker/:/volume -it copytest bash
答案 0 :(得分:2)
Docker容器正在以root用户运行。因此,在copytest.py文件中执行复制命令后,“ gent_copy.csv”文件将由root拥有。后者表现为锁。
您可以在Dockerfile中创建一个与系统上相同的用户。因此文件将被同一用户复制。
请检查以下Dockerfile(用您的本地用户替换XXXXXX)。
FROM python:3.5
ARG local_user=XXXXXX
RUN useradd -ms /bin/bash $local_user
ADD entrypoint.sh entrypoint.sh
RUN chown $local_user:$local_user entrypoint.sh
USER $local_user
RUN chmod 755 entrypoint.sh
ENTRYPOINT ./entrypoint.sh