python - 如何将 NFS 共享挂载到 JupyterHub 中的衍生容器?
问题描述
我正在尝试在 DockerSwarm 上配置 JupyterHub 服务器。我无法将 NFS 文件夹直接挂载到 JupyterHub 服务生成的容器中。
我尝试使用 docker-compose 将它挂载到 JupyterHub 服务,然后将其挂载到本地挂载的文件夹到生成的容器并且它可以工作,但是现在我们在此服务上遇到了瓶颈,因为每次容器需要处理文件时,它首先会转到 JupyterHub服务,然后到 NFS 共享。我想让它从生成的容器直接进入 NFS 共享,但这似乎不是一件容易的事。
要将 nfs 正确安装到容器,我使用了 jupyterhub_config.py 中的下一个代码
mounts = [
{
'type': 'volume',
'target': USER_WORKDIR,
'source': 'jhub-user-{username}',
'driver_config': {
'name': 'local',
'options': {
'type': 'nfs',
'o': NFS_IP + ',rw',
'device': ':/opt/nfs/share'
}
}
}
]
c.SwarmSpawner.extra_container_spec = {'mounts': mounts}
在这种情况下,我可以登录到容器,但不会创建用户的卷。
我尝试的另一种方法是将此代码放入pre_spawn_hook
,使其看起来像这样
def pre_spawn_hook(spawner):
username = spawner.user.name
mounts = [
{
'type': 'volume',
'target': USER_WORKDIR,
'source': 'jhub-user-{username}',
'driver_config': {
'name': 'local',
'options': {
'type': 'nfs',
'o': NFS_IP + ',rw',
'device': ':/opt/nfs/share'
}
}
}
]
spawner.extra_container_spec = {'mounts': mounts}
c.SwarmSpawner.pre_spawn_hook = pre_spawn_hook
在这种情况下,它会在登录时为每个用户创建自己的卷,但这些卷由于某种原因无权访问 NFS 文件夹。
此外,仅对exec
生成的容器和运行mount
命令不起作用。
谢谢。
解决方案
推荐阅读
- javascript - javascript 子字符串方法支持整数 - chrome
- http - 进入同一网站时在wireshark上获得不同的结果
- android - AdjustResize 不适用于第二个 EditText
- angular - formarray的formcontrol没有在mattable中更新
- android - Android ButterKnife 无法绑定 TabItem 视图
- python - 编译时向 Tkinter GUI 添加图标
- heroku - 在使用 heroku 部署之前设置 nodemailer
- android - 如何在 Android Java 中处理 Webview 点击事件
- r - 无法在 Rstudio 中安装 xlsx 包。rjava,无法在 ubuntu 16.04 中加载共享对象
- jquery - 如何将 JQuery 响应数据 (Html.ActionLink) 解码为 HTML 表格元素?