Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无根Docker:在没有sudo的情况下将文件写入卷装载时,权限被拒绝_Docker_File Permissions_Docker Volume_Rootless - Fatal编程技术网

无根Docker:在没有sudo的情况下将文件写入卷装载时,权限被拒绝

无根Docker:在没有sudo的情况下将文件写入卷装载时,权限被拒绝,docker,file-permissions,docker-volume,rootless,Docker,File Permissions,Docker Volume,Rootless,在没有sudo权限的情况下(通过ssh)在容器中无法写入装入的卷。装载的文件夹是主机用户在主机上的主文件夹。我正在运行一个无根docker守护进程 我执行了以下步骤来启动容器: 我已经按照你的指示建立了一个无根码头工人 使用以下命令生成Dockerfile(如下所示): docker build--build arg USER\u ID=$(ID-u)--build arg GROUP\u ID=$(ID-g)--build arg USER\u NAME=USER--build arg US

在没有sudo权限的情况下(通过ssh)在容器中无法写入装入的卷。装载的文件夹是主机用户在主机上的主文件夹。我正在运行一个无根docker守护进程

我执行了以下步骤来启动容器:

  • 我已经按照你的指示建立了一个无根码头工人

  • 使用以下命令生成Dockerfile(如下所示):

    docker build--build arg USER\u ID=$(ID-u)--build arg GROUP\u ID=$(ID-g)--build arg USER\u NAME=USER--build arg USER\u PASS=USER-t测试

  • 已使用以下命令启动容器:

    docker run-d--name test_container-p50000:22-v/home/$(id-u-n):/mnt/home test

  • Ssh已通过

    sshuser@localhost-50000便士

  • 当我在主目录中创建文件时,我的权限被拒绝。当我在主机中创建一个新文件夹并将其chmod为777时;然后,我可以创建文件,但它们不会以适当的用户/组出现在我的原始主机中,相反,我会得到如下结果:

    drwxrwxrwx  6 gdekkers gdekkers 4096 May 25 21:10 .
    drwxr-xr-x 14 gdekkers gdekkers 4096 May 25 21:10 ..
    drwxrwxrwx  3 gdekkers gdekkers 4096 Apr 30 13:01 SomeFolder
    drwxr-xr-x  2   100999   100999 4096 May 25 21:08 test
    drwxr-xr-x  2   100999   100999 4096 May 25 21:10 test2
    
    这是不方便的,因为我需要定期申请chown。它似乎与无根Docker使用的名称空间有关。如何确保创建的文件与主机上的用户匹配

    Dockerfile:

    FROM nvidia/cuda:11.2.2-cudnn8-runtime-ubuntu20.04
    
    # Input arguments
    ARG USER_ID
    ARG GROUP_ID
    ARG USER_NAME
    ARG USER_PASS
    
    # environment variables
    ARG DEBIAN_FRONTEND="noninteractive"
    ENV TZ Europe/Belgium
    
    # Install some basic utilities and clean up
    RUN apt-get update && apt-get install -y \
        nano \
        ca-certificates \
        sudo \
        libx11-6 \
        openssh-server \
     && rm -rf /var/lib/apt/lists/*
    
    # Create a sudo user
    RUN groupadd --gid $GROUP_ID user
    RUN useradd -rm -d /home/$USER_NAME -s /bin/bash --uid $USER_ID --gid $GROUP_ID -G sudo $USER_NAME
    RUN usermod -aG sudo $USER_NAME
    RUN echo $USER_NAME:$USER_PASS | chpasswd
    
    # Start ssh service
    RUN service ssh start
    EXPOSE 22
    CMD ["/usr/sbin/sshd","-D"]
    
    谢谢