Docker работает с изображениями вместо Dockerfiles - PullRequest
0 голосов
/ 05 января 2019

Может кто-нибудь объяснить мне, почему обычный процесс Docker состоит в том, чтобы создать образ из Dockerfile и затем загрузить его в репозиторий, а не просто перемещать Dockerfile в репозиторий и из него?

Допустим, у нас есть ноутбук для разработки и тестовый сервер с Docker.

Если мы создаем образ, это означает загрузку и загрузку всех пакетов внутри Dockerfile. Иногда это может быть очень большим (например, PyTorch> 500 МБ).

Вместо передачи большого файла изображения на сервер и с сервера, имеет ли смысл, возможно, скомпилировать изображение локально, чтобы убедиться, что оно работает, но в основном транспортировать небольшой файл Docker и построить образ на сервере?

Ответы [ 3 ]

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

Вместо передачи большого файла изображения на сервер и с сервера, не имеет смысла, возможно, скомпилировать изображение локально, чтобы проверить это работает, но в основном транспортирует небольшой Dockerfile и создает изображение на сервере?

Абсолютно! Например, вы можете настроить автоматизированную сборку на Docker Hub, которая будет делать это каждый раз, когда вы регистрируете обновленную версию вашего Dockerfile в репозитории GitHub.

Или вы можете соответственно настроить свой собственный сервер сборки / конвейер конфигурации.

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

ИМХО, одной из причин создания концепции изображений и помещения их в репозиторий является совместное использование с людьми. Например, мы вызываем готовый образ Python для выполнения всех связанных с питоном вещей для программы на питоне, запускаемой в Dockerfile. Точно так же мы могли бы создать собственный код (давайте возьмем пример, который я сделал для установки apache с некоторыми пользовательскими шагами (например, изменение портов и дополнительные шаги), я создал его образ и, наконец, поместил его в репозиторий моей компании.

Через несколько дней я узнал, что, возможно, другие команды также используют его, и теперь, когда они делятся им, им НЕ нужно вносить какие-либо изменения, просто используйте мой образ, и они должны быть сделаны.

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

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


Часто Dockerfile образует часть более крупного процесса сборки, при этом выходные файлы с предыдущих этапов копируются в окончательный образ. Если вы хотите разместить Dockerfile вместо окончательного образа, вам также потребуется разместить (обычно временные) обработанные файлы или весь исходный сценарий репо и сборки.

Последнее часто делается для проектов с открытым исходным кодом, но для удобства также часто доступны предварительно созданные образы Docker.

Одним из простых решений этой проблемы является запись всего процесса сборки в Dockerfile с использованием многоступенчатых сборок (введено в Docker CE 17.05 & EE 17.06). Но даже с полным процессом сборки, описанным независимо от платформы в одном Dockerfile, полный исходный репозиторий все равно должен быть предоставлен.

TL, DR: Думайте об изображении Docker как о обычном двоичном файле. Это удобно для загрузки и установки без возни с исходными файлами. Вы могли бы загрузить исходный код приложения C и собрать его, используя предоставленный Makefile, но зачем вам, если бинарный файл был доступен для вашей системы?

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