首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何共享码头上挂载目录的所有权?

如何共享码头上挂载目录的所有权?
EN

Stack Overflow用户
提问于 2020-02-14 06:42:43
回答 1查看 58关注 0票数 1

我仍然是新的使用码头,目前,我计划做一个机器学习的培训,在超级计算机上共享的许多用户。我已经成功地创建了一个映像并挂载了所有必要的数据,但是当我尝试运行培训时,当代码试图访问.txt文件时,我被拒绝了权限。这是错误

代码语言:javascript
复制
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):

代码语言:javascript
复制
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

我使用以下命令创建了容器

代码语言:javascript
复制
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

关于创建用户的容器的一部分

代码语言:javascript
复制
# 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

我希望有人能帮我解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-14 08:44:21

问题位于结果目录中:

代码语言:javascript
复制
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启动容器:

代码语言:javascript
复制
docker run  --user $(id -u):$(id -g) myImage

注意,只有当图像中的用户和组id与主机上的用户id相同时,ii才能工作。缺省值为1000:1000。

如果这些id不匹配,您可能会找到一种方法,使用户或组id匹配您需要在两边操作的文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60221293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档