Когда контейнер монтирует сокет Docker хоста, может ли он также иметь доступ к учетным данным хоста? - PullRequest
0 голосов
/ 22 января 2020

Я использую Docker контейнер X, который сам должен порождать новый контейнер Y. Как указано в документации, я связываю mount /var/run/docker.sock внутри X, чтобы X мог связываться с Docker хоста. Когда X пытается сделать docker run SOME_IMAGE, на самом деле это хост, который порождает контейнер из SOME_IMAGE, а не X. Пока все хорошо.

Теперь я хочу использовать изображения из частного репо. На хосте docker run MY.PRIVATE.DOCKER.REGISTRY.com/SOME_IMAGE автоматически вытянет SOME_IMAGE из MY.PRIVATE.DOCKER.REGISTRY.com. Однако для частного репо требуется, чтобы я прошел аутентификацию, в результате чего мои учетные данные были записаны в ~/.docker/config.json. После этого хост может получать изображения в обычном режиме.

Однако, несмотря на аутентификацию хоста, контейнер X по-прежнему не может получать изображения. Я предполагаю, что это потому, что X не имеет ~/.docker/config.json. Я также не хочу проходить аутентификацию внутри каждого отдельного Docker контейнера.

Если я также установлю привязку ~/.docker/config.json, это позволит контейнерам прозрачно извлекать данные из частного репозитория, не беспокоясь об аутентификации, так долго как хост аутентифицирован? Есть ли существенные недостатки в этом?

1 Ответ

0 голосов
/ 22 января 2020

да

docker run -v /var/run/docker.sock:/var/run/docker.sock -v /home/me/.docker:/root/.docker -it docker sh

/ $ docker pull private-registry/name:tag
# pulls the image

Если я подключу конфигурацию, она будет работать. Это не будет работать со всеми конфигурациями, некоторые конфигурации вызывают команды авторизации, которые предоставляют учетные данные для удаленного репо. Вам нужно убедиться, что эти команды доступны внутри контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...