M. *_*eev 5 python docker docker-swarm jupyter-notebook 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}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我可以登录到容器,但用户的卷不会创建。
我尝试的另一种方法是将此代码放入其中,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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它会在登录时为每个用户创建自己的卷,但由于某种原因这些卷无权访问 NFS 文件夹。
此外,仅对exec生成的容器和运行mount命令不起作用。
谢谢。
| 归档时间: |
|
| 查看次数: |
1247 次 |
| 最近记录: |