我正在尝试在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
命令不起作用。
谢谢。