Используйте gcsfuse для монтирования хранилищ облачного хранилища Google в докер-контейнер

Я пытаюсь смонтировать облако Google Bucket из контейнера Docker и получаю следующую ошибку:

[root@cdbdc9ccee5b workdir]# gcsfuse -o allow_other  --debug_gcs --key-file=/src/gcloud_service_account.json my-bucket-name /gcloud
Using mount point: /gcloud
Opening GCS connection...
Opening bucket...
daemonize.Run: readFromProcess: sub-process: mountWithArgs: mountWithConn:     setUpBucket: OpenBucket: Bad credentials for bucket "my-bucket". Check the bucket name and your credentials.

Мои учетные данные работают на моей хост-машине, но не на работающем контейнере. API говорит, что не следует использовать root для подключения, но вы можете переопределить это с помощью флага -o allow_other (флаг fuse). Любые идеи приветствуются.

Это работает на базе изображения centos7

2 ответа

Обновление: я смог получить gcsfuse для монтирования. Я должен был запустить докер с --priviledged вариант. (спасибо #thaJeztah за хлебную крошку!)

Корень против не красная сельдь здесь; рассматриваемые учетные данные являются учетными данными GCS.

Смотрите здесь документацию по передаче учетных данных GCS в gcsfuse. Самый простой способ сделать это - использовать учетные данные, которые вы изначально сконфигурировали для своей виртуальной машины GCE (при условии, что вы работаете на GCE), что делает работу gcsfuse без каких-либо дополнительных усилий. Но если это не сработает, вы можете использовать флаг --key-file дать gcsfuse путь к файлу ключа JSON, который вы загружаете из консоли разработчиков Google.

Вы действительно хотите избежать запуска контейнеров с помощью --privileged вариант. Я считаю, что вам нужно только добавить возможность SYS_ADMIN и доступ к /dev/fuse устройство.

docker run \
    --rm -it \
    --cap-add SYS_ADMIN \
    --device /dev/fuse \
    ubuntu
Другие вопросы по тегам