当前位置: 首页 > 面试题库 >

在Docker容器中挂载NFS共享

井轶
2023-03-14
问题内容

有谁知道如何使用centos基本映像在docker容器中安装nfs共享?我已经尝试过以下命令:

mount server:/dir /mount/point

并得到下一个错误:

mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified

当我尝试将其与 -o nolock 选项一起使用时,错误是:

mount.nfs: Operation not permitted

问题答案:

对于使用mount,您需要具有此CAP_SYS_ADMIN功能,Docker在创建容器时会丢弃该功能。

有几种解决方案:

  1. --cap-add sys_admin标志启动容器。这将导致Docker保留该CAP_SYS_ADMIN功能,从而使您可以从容器内挂载NFS共享。这可能是一个安全问题;不要在不受信任的容器中执行此操作。[此答案的先前版本建议使用--privileged=true保留 所有 功能,这要感谢@earcam --cap-add代替使用]。
  2. 在主机上挂载NFS共享,并将其作为主机卷传递到容器中:

    you@host > mount server:/dir /path/to/mount/point
    

    you@host > docker run -v /path/to/mount/point:/path/to/mount/point

  3. 使用Docker卷插件(如Netshare插件)直接将NFS共享作为容器卷挂载:

    you@host > docker run \
    

    –volume-driver=nfs \
    -v server/dir:/path/to/mount/point \
    centos



 类似资料:
  • 问题内容: 我有一个在Docker容器中运行的Web应用程序。此应用程序需要访问我们公司文件服务器(带有Active Directory域控制器的Windows Server)上的某些文件。我尝试访问的文件是为我们的客户创建的图像文件,Web应用程序将它们显示为客户产品组合的一部分。 在我的开发机器上,我通过条目安装了适当的文件夹,并且通过参数将主机安装点安装在Docker容器中。这很完美。 现在

  • 问题内容: 我有一个v3的撰写文件,其中有3个服务共享/使用相同的卷。在使用群模式时,我们需要创建额外的容器和卷来管理整个集群中的服务。 我打算使用NFS服务器,以便单个NFS共享将直接安装在群集内的所有主机上。 我发现以下两种实现方法,但是它需要在Docker主机上执行额外的步骤- 在主机上使用“ fstab”或“ mount”命令挂载NFS共享,然后将其用作Docker服务的主机卷。 使用Ne

  • 问题内容: 示例(为简便起见,省略了许多选项): 这是错误的,因为没有名称名称的卷,这意味着该卷名称必须是文件的完整路径(即,您不能在该卷名称后附加路径)? 尝试设置只会返回错误。 有没有办法将单个文件安装到容器中? 问题答案: 您不能在命名卷中装入文件或子目录,源是命名卷或主机路径。NFS本身,以及您将在Linux中挂载的大多数文件系统,都要求您挂载整个文件系统,而不是单个文件,当下降到inod

  • 我有一个容器,我想停止,但当我做一个它挂起,永远不会停止它。 我试过正常的和

  • 问题内容: 我有这个容器基于(但是与我有相同的问题,这并不是很相关)。我到达需要的地方 我得到 我在任何内核日志中都找不到任何东西,而且没有任何有趣的结果。我显然可以在主机上执行此操作(使用任何其他对子树/节点)。在我上面的示例中,/ htdocs / www是Docker卷的安装点,但它似乎没有任何意义,因为容器内没有任何一对子树/节点。 问题答案: 要使用系统调用,您需要具备此功能。默认情况下

  • 问题内容: 我对Docker中的整个数据量过程有疑问。基本上,这里有两个Dockerfile及其各自的运行命令: Dockerfile 1- 命令1- Dockerfile 2- 命令2- 因此,奇怪的是第一个dockerfile和命令按预期工作。docker守护程序将目录从容器装载到主机的位置。因此,我可以根据需要编辑配置文件,它们将在重新启动后保留在容器中。 但是,对于第二个dockerfil