Как смонтировать общий ресурс NFS в порожденные контейнеры в JupyterHub? - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь настроить сервер JupyterHub на DockerSwarm.Я не могу смонтировать папку 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, чтобы он выглядел следующим образомthis

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 не работает.

Спасибо.

...