Показать HN: Unregistry – «docker push» напрямую на серверы без реестра ( github.com/psviderski ) Я устал от этой возни с push-to-registry/pull-from-registry каждый раз, когда мне нужно было развернуть образ Docker.
В некоторых случаях использование полноценного внешнего (или даже локального) реестра — это раздражающие накладные расходы. И если вы задумаетесь, то на любом из ваших хостов с поддержкой Docker уже есть некая форма реестра — собственное хранилище образов Docker.
Поэтому я создал Unregistry [1], который раскрывает хранилище образов Docker (containerd) через стандартный API реестра. Он добавляет команду `docker pushsh`, которая напрямую отправляет образы удаленным демонам Docker через SSH. Он передает только недостающие слои, что делает его быстрым и эффективным.
docker pushsh myapp:latest user@server Под капотом он запускает временный контейнер unregistry на удаленном хосте, отправляет данные на него через туннель SSH и очищает его по завершении.
Я создал его как побочный продукт во время работы над Uncloud [2], инструментом для развертывания контейнеров в сети хостов Docker, и решил, что он будет полезен в качестве отдельного проекта.
Буду рад услышать ваши мысли и варианты использования!
[1]: https://github.com/psviderski/unregistry
[2]: https://github.com/psviderski/uncloud
Быстрая и грубая версия:
docker -H host1 image save IMAGE | docker -H host2 image load примечание: это совсем неэффективно (нет сжатия или кэширования слоев)!
Отлично. И команда `pussh` определенно заслуживает звания одной из самых элегантных игр слов: легко запоминается, не требует пояснений и отличается от своей родственной стандартной команды всего на одну букву.

В чем разница между этим и skopeo? Это поддержка ssh? Я не очень хорошо знаком с skopeo, простите за невежество
https://github.com/containers/skopeo
«skopeo», по-видимому, имеет отношение к управлению реестрами, что весьма отличается от этого.

Это действительно круто. Вы поддерживаете или планируете поддерживать docker compose?

Спасибо! Не могли бы вы уточнить, какую поддержку вы имеете в виду для docker compose?

Я предполагаю, что он имеет в виду «вместо того, чтобы отправлять каждый отдельный контейнер для проекта, можно было бы взять что-то вроде файла compose по списку базовых контейнеров и отправить их все в конечную точку».

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

Как давний поклонник шеф-повара-соло, это действительно круто.
В настоящее время мне нужно использовать реестр Docker для моих развертываний Kamal. Вы знакомы с ним и устраняет ли это зависимость от сторонних приложений?
А как насчет использования docker context? Я часто его использую и он отлично работает.

Как контексты Docker помогают при передаче образа между хостами?

это здорово, надеюсь, DHH и ребята, работающие над Kamal, примут это во внимание.
единственная причина, по которой я в конечном итоге не использовал kamal, заключалась в «необходимости» реестра docker. Когда я могу легко отправить dockerfile / compose на свой vps, создать там образ и перезапустить его для развертывания с помощью команды make.
очень круто. теперь давайте интегрируем это так, чтобы мы могли делать `docker/podman push localimage:localtag ssh://hostname:port/remoteimage:remotetag` без установки дополнительного программного обеспечения 🙂
Source: news.ycombinator.com