Могу ли я использовать / создать пользовательский образ докера для создания другого изображения? - PullRequest
0 голосов
/ 09 января 2019

У меня есть сценарий. Я хочу создать образ в одном экземпляре / сервере, но в этом случае нет подключения к Интернету.

Итак, можно ли создать образ B со всеми пакетами, установленными на моем компьютере, а затем нажать на x.x.x.x и использовать его в образе A как тег FROM?

Это будет выглядеть так:

FROM x.x.x.x/B:latest
RUN ***
ENTRYPOINT

Пожалуйста, предложите правильное решение этой проблемы.

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Краткий ответ - конечно, можно. Вы можете использовать любое изображение, включая ваше собственное, для создания новых изображений.

Длинный ответ - рассмотрите Docker multistage build для вашей цели. Это позволяет уменьшить количество изображений и место, занимаемое реестром докера.

Вы можете узнать больше на https://docs.docker.com/develop/develop-images/multistage-build/

Вкратце - вы создаете одиночный Dockerfile, в котором вы определяете несколько изображений на основе друг друга. Если вам не нужно ваше базовое изображение вне производного, это ваш случай. Следующий пример иллюстрирует:

Dockerfile

# First create base image
FROM foo:latest as mybase # note we tag it 'mybase' 
RUN blahblah

FROM mybase  # here we derive new image, note Dockerfile is same!
RUN blahblahblah
0 голосов
/ 09 января 2019

Да, вы можете.

Во-первых, вы говорите, что изображение A находится на сервере, у которого нет подключения к Интернету. Если это так, то вы не можете получить доступ к встроенному образу B, который вы поместили в x.x.x.x, если только x.x.x.x, на который вы ссылаетесь, не является localhost.

Чтобы ответить на вопрос полностью, предположив, что нет интернета:

Dockerfile B содержит все, что вы хотите в вашем базовом образе. Построй это. Затем переместите изображение на сервер без интернета, на котором вы создаете образ A. (Чтобы переместить изображение, ознакомьтесь с командами экспорта в Docker или командами сохранения Docker и / или Google «Переместите изображение Docker с одного хоста на другой». Мой начальный поиск привел меня сюда: https://blog.giantswarm.io/moving-docker-container-images-around/)

(примечание: для тех, кто хочет сделать это, и у вас есть подключение к Интернету, вы должны отправить изображение B в репозиторий, а затем вытащить изображение прямо оттуда в Dockerfile A, что пропустит переход от узла к узлу хоста. )

Тогда, как вы уже написали, Dockerfile для образа A должен иметь:

FROM imageB:latest

чтобы вытащить из вашего первого изображения. Это все довольно легко. Длинная история, да, вы можете создавать свои собственные изображения, а затем создавать другие изображения на основе этого изображения.

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