TL; DR В принципе, я ищу:
docker push myimage ssh://myvps01.vpsprovider.net/
Я не понимаю, что такое целая статья Docker Hub/Registry. Я знаю, что могу запустить частный реестр, но для этого мне нужно настроить инфраструктуру фактического запуска сервера.
Я заглянул внутрь внутренней работы Docker (ну, по крайней мере, в файловой системе), и похоже, что уровни образов Docker - это всего лишь куча tarballs, более или менее, с некоторыми сложными именами файлов. Я наивно думаю, что было бы невозможно взломать простой скрипт Python для распределения push/pull, но, конечно, я не пытался, поэтому я задаю этот вопрос.
Существуют ли какие-либо технические причины, по которым Docker не может просто распространять (без сервера) push/pull, например Git или Mercurial?
Я думаю, что это было бы огромной помощью, поскольку я мог просто подтолкнуть изображения, которые я построил на своем ноутбуке прямо на серверы приложений, вместо того, чтобы сначала нажать на сервер репо, а затем вытащить с серверов приложений. Или, может быть, я просто неправильно понял концепцию, и реестр - действительно важная функция, которая мне абсолютно необходима?
EDIT В каком-то контексте, который, надеюсь, объясняет, почему я хочу этого, рассмотрим следующий сценарий:
- Разработка, тестирование, выполненное на моем ноутбуке (OSX, работающий на Docker-машине, использование докеров для определения сервисов и зависимостей)
- Развертывание в живую среду с помощью скрипта (самозаписываемое, bash, несколько зависимостей от dev-машины, в основном, только Docker-машина)
- Разверните новый VPS с очень небольшим количеством зависимостей, кроме SSH-доступа и Docker-демона.
- Нет "постоянных" сервисов, работающих в любом месте, т.е. Я специально не хочу размещать постоянно действующий реестр (особенно недоступный для всех экземпляров VPS, хотя это, вероятно, можно было бы решить с помощью некоторого умного туннелирования SSH)
В настоящее время лучшим решением является использование Docker-машины, чтобы указать на сервер VPS и перестроить его, но это замедляет развертывание, поскольку я должен каждый раз создавать контейнер из исходного кода.