2016-05-31 7 views
4

Мне интересно, есть ли рекомендации по вводу учетных данных в контейнер Docker во время docker build. В моем Dockerfile мне нужно получить ресурсы webservers, которые требуют базовой проверки подлинности, и я думаю о правильном способе переноса учетных данных в контейнер без их жесткого кодирования.Как принести учетные данные в контейнер Docker во время сборки

Как насчет файла .netrc и его использования с помощью curl --netrc ...? Но как насчет безопасности? Мне не нравится идея сохранения учетных данных в исходном репозитории вместе с моим файлом Docker.

Есть ли, например, способ ввода учетных данных с использованием параметров или переменных среды?

Любые идеи?

+0

см. Https://stackoverflow.com/questions/32664729/how-can-i-pass-secret-data-to-a-container – user2915097

+1

Я думаю, что этот вопрос касается передачи учетных данных только для _build_ , такие как учетные данные для извлечения zip-релиза из некоторого URL-адреса, который должен быть распакован во время сборки, _not_ учетные данные для приложения, когда контейнер работает (о чем связан вышеперечисленный вопрос). 'ARG' будет соответствовать, но это не безопасно для учетных данных, поскольку значения хранятся в метаданных изображения и видны с помощью истории докеров для всех, у кого есть файл изображения. –

ответ

0

Несколько новых функций Docker делают это более элегантным и безопасным, чем это было в прошлом. Новый multi-phase builds позволяет реализовать шаблон строителя с одним Dockerfile. Этот метод помещает наши учетные данные во временный контейнер «строитель», а затем этот контейнер создает новый контейнер, который не содержит никаких секретов.

У вас есть выбор того, как вы получаете свои учетные данные в контейнере своего строителя. Например:

  • Используйте переменную окружения: ENV creds=user:pass и curl https://[email protected]
  • Используйте build-arg передать полномочия
  • Скопируйте ключ SSH в контейнер: COPY key /root/.ssh/id_rsa
  • Используйте собственные безопасные регистрационные данные вашей ОС с помощью Credential Helpers

Dockerfile

## Builder 
FROM alpine:latest as builder 
# 
# -- insert credentials here using a method above -- 
# 
RUN apk add --no-cache git 
RUN git clone https://github.com/some/website.git /html 
# 
## Webserver without credentials 
FROM nginx:stable 
COPY --from=builder /html /usr/share/nginx/html 
Смежные вопросы