docker中的python脚本在卷中创建锁定的文件

时间:2018-06-29 11:51:41

标签: python docker

我有一个带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

1 个答案:

答案 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