#docker #dockerfile #credentials
#docker #dockerfile #учетные данные
Вопрос:
У меня есть dockerfile, который создает один промежуточный образ, который использует конфиденциальные данные для извлечения кода из частного репозитория.
Итак, имея такое содержимое Dockerfile:
FROM alpine/git:v2.26.2 as intermediate
ARG SSH_PRIVATE_KEY
RUN mkdir /root/.ssh/ amp;amp; chmod 755 /root/.ssh
RUN echo "${SSH_PRIVATE_KEY}" > /root/.ssh/id_ed25519 amp;amp; chmod 600 /root/.ssh/id_ed25519
# Generate public key from private key.
RUN ssh-keygen -y -f /root/.ssh/id_ed25519 > /root/.ssh/id_ed25519.pub
# make sure your domain is accepted
RUN touch /root/.ssh/known_hosts amp;amp; chmod 644 /root/.ssh/known_hosts
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
RUN git clone -b master --single-branch git@github.com:user/my-repo.git /root/my-repo
FROM main_image
# Do some stuff
COPY --from=intermediate /root/my-repo /mnt/my-repo
# Do some stuff more...
# ....
# ....
CMD ["my_cmd"]
Вопрос: после того, как изображение построено из этого файла Dockerfile, я также получаю висячий образ None (при условии, что он поступает из промежуточного образа). docker images
, выводит это None
изображение (есть также много None
изображений, которые отображаются docker images -a
, но те, которые я знаю, ожидаемы). Ожидается ли, что это всегда будет происходить, и я должен просто удалить его, или я делаю что-то не так, и я не должен получать висячее изображение после создания моего изображения?
Ответ №1:
Да, вы правы, что если вы видите «none: none» при запуске «docker images -a», это промежуточные изображения, которые повторно используются позже с использованием кэшированных слоев
Когда вы видите изображения ‘none: none’ при выполнении команды ‘docker images’, это изображения, которые висят и больше не используются, поэтому их следует удалить, чтобы сохранить место на диске
Этот сайт объясняет это довольно хорошо — https://www.projectatomic.io/blog/2015/07/what-are-docker-none-none-images /.
В нем используется пример извлечения базового образа Fedora для запуска образа «hello-world» (то есть было создано 2 изображения — промежуточное для Fedora и выходное изображение для нашего приложения hello-world)
Если вы перестроили образ hello-world месяц спустя и доступна новая версия Fedora, новый образ Fedora извлекается, оставляя старый промежуточный образ Fedora висячим (с none:none), и тогда он просто занимает место на диске