我仍然是新的使用码头,目前,我计划做一个机器学习的培训,在超级计算机上共享的许多用户。我已经成功地创建了一个映像并挂载了所有必要的数据,但是当我尝试运行培训时,当代码试图访问.txt文件时,我被拒绝了权限。这是错误
user@701c214f9fa9:/app/sfsnet$ python main_mix_training.py
Traceback (most recent call last):
File "main_mix_training.py", line 156, in <module>
main()
File "main_mix_training.py", line 132, in main
with open(args.log_dir+'/details.txt', 'w') as f:
PermissionError: [Errno 13] Permission denied: './results//details.txt'
user@701c214f9fa9:/app/sfsnet$ python main_mix_training.py
Traceback (most recent call last):
File "main_mix_training.py", line 156, in <module>
main()
File "main_mix_training.py", line 132, in main
with open(args.log_dir+'/details.txt', 'w') as f:
PermissionError: [Errno 13] Permission denied: './results//details.txt'我已经检查了挂载的目录所有权,它应该都是我的(dgx_user6):
total 308
-rw-r--r-- 1 dgx_user6 dgx_user6 1271 二 14 05:32 checkmodel.py
-rw-r--r-- 1 dgx_user6 dgx_user6 458 二 13 23:51 cropping.py
-rw-r--r-- 1 dgx_user6 dgx_user6 12890 二 14 14:03 data_loading.py
drwxr-xr-x 5 dgx_user6 dgx_user6 4096 二 14 04:26 dataset
-rw-r--r-- 1 dgx_user6 dgx_user6 641 二 13 23:51 generate_dataset_csv.py
-rw-r--r-- 1 dgx_user6 dgx_user6 2687 二 13 23:51 interpolate.py
-rw-r--r-- 1 dgx_user6 dgx_user6 95 二 14 05:32 interpolate.sh
-rw-r--r-- 1 dgx_user6 dgx_user6 0 二 14 05:32 log_file
-rw-r--r-- 1 dgx_user6 dgx_user6 6555 二 13 23:51 main_gen_pseudo-data.py
-rw-r--r-- 1 dgx_user6 dgx_user6 7548 二 13 23:51 main_gen_synthetic_and_full.py
-rw-r--r-- 1 dgx_user6 dgx_user6 7030 二 14 14:12 main_mix_training.py
-rw-r--r-- 1 dgx_user6 dgx_user6 69169 二 14 05:34 'model backup.py'
-rw-r--r-- 1 dgx_user6 dgx_user6 2914 二 14 05:32 model_loading_synchronization.ipynb
-rw-r--r-- 1 dgx_user6 dgx_user6 69339 二 14 05:34 models.py
drwxr-xr-x 2 dgx_user6 dgx_user6 4096 二 13 23:51 pretrained
drwxr-xr-x 2 dgx_user6 dgx_user6 4096 二 14 05:33 __pycache__
-rw-r--r-- 1 dgx_user6 dgx_user6 3490 二 13 23:51 README.md
drwxr-xr-x 9 dgx_user6 dgx_user6 4096 二 14 05:33 results
-rw-r--r-- 1 dgx_user6 dgx_user6 5090 二 14 05:34 shading.py
-rw-r--r-- 1 dgx_user6 dgx_user6 605 二 14 05:34 super_resolution.py
-rw-r--r-- 1 dgx_user6 dgx_user6 39867 二 14 05:32 'train backup.py'
-rw-r--r-- 1 dgx_user6 dgx_user6 32377 二 13 23:51 train.py
-rw-r--r-- 1 dgx_user6 dgx_user6 1685 二 13 23:51 utils.py我使用以下命令创建了容器
nvidia-docker run -e NVIDIA_VISIBLE_DEVICES=3 -t -i --name coba --mount type=bind,src=/home/dgx_user6/SfSNet/,dst=/app/sfsnet sfs_face关于创建用户的容器的一部分
# Create a non-root user and switch to it
RUN adduser --disabled-password --gecos '' --shell /bin/bash user \
&& chown -R user:user /app
RUN echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user
USER user
# All users can use /home/user as their home directory
ENV HOME=/home/user
RUN chmod 777 /home/user我希望有人能帮我解决这个问题。
发布于 2020-02-14 08:44:21
问题位于结果目录中:
PermissionError: [Errno 13] Permission denied: './results//details.txt'但是只有目录的所有者才能写入:
drwxr-xr-x9 dgx_user6 dgx_user6 4096二14 05:33结果
您使用的映像指定一个用户,该用户的id与主机上目录所有者的用户id不同。
在使用-u / --user标志(请参阅run命令引用)启动容器时,可以通过指定用户(可选组)来覆盖该行为。
例如,使用主机用户的用户和组id启动容器:
docker run --user $(id -u):$(id -g) myImage注意,只有当图像中的用户和组id与主机上的用户id相同时,ii才能工作。缺省值为1000:1000。
如果这些id不匹配,您可能会找到一种方法,使用户或组id匹配您需要在两边操作的文件。
https://stackoverflow.com/questions/60221293
复制相似问题