@sam Сэм, моя компания теперь блокирует Docker Hub. Я запускаю Docker для Discourse в нескольких средах и мне нужно выполнить обновление. Очевидно, что это не удаётся:
Error response from daemon: Get https://registry-1.docker.io/v2/: http: server gave HTTP response to HTTPS client
Error response from daemon: Get https://registry-1.docker.io/v2/: http: server gave HTTP response to HTTPS client
Unable to find image 'discourse/base:2.0.20230502-0058' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: http: server gave HTTP response to HTTPS client.
Самый простой способ, который я вижу для выполнения обновлений, — использовать другую машину, не находящуюся в той же сети, скачать последнюю базовую образную версию Discourse, а затем каким-то образом загрузить или передать её на машину, требующую обновления. После этого как-то заставить Discourse или лаунчер использовать локальные образы и не пытаться загружать их из Docker Hub. Я видел различные обсуждения, где почти находил решения, которые могли бы сработать, но ничего чёткого. Как это сделать?
@Falco Не могли бы вы привести конкретные примеры команд для сохранения и загрузки… например, что именно сохранять, куда сохранять и какая полная команда используется для загрузки?
@Falco — Большое спасибо, с нетерпением жду примера для настольной версии… Надеюсь, я всё правильно понимаю, так как беспокоюсь о том, чтобы случайно уничтожить свои хост-сайты не просто «обновлением».
У меня есть устаревший Docker-сайт Discourse для моей компании, содержащий информацию, которую я не могу вынести за пределы компании из-за внутренних правил и т. д. Таких сайтов четыре: np.falcoisgreat.com, stg.falcoisgreat.com, tst.falcoisgreat.com и www.falcoisgreat.com. Все они работают на старых версиях… теперь они больше не могут получить доступ к Docker Hub, когда launcher пытается загрузить последний базовый образ Docker.
Поэтому, чтобы обойти это в условиях свободы интернета, я поднял новый сервер Ubuntu с Docker-версией Discourse, чтобы просто скачать последний базовый образ Docker (на самом деле он доступен по адресу https://discourse1.codeplus.cloud). Теперь я планирую загрузить новый образ без контента и без чего-либо ещё, упаковать его, предположительно с помощью команды docker save, затем передать этот tar-файл, например, на np.falcoisgreat.com, используя curl или SFTP, и загрузить его через docker load?
Я не знаю всех деталей этого процесса и изучу их, но меня беспокоит возможность уничтожения текущего контента и конфигурации np.falcoisgreat.com. Конечно, я сделаю резервные копии, но для меня важно найти способ ничего не удалить. Пожалуйста, подтвердите, что этот метод действительно предназначен для того, что я думаю?
server2 — сервер, у которого нет доступа к DockerHub
Выполните следующие действия:
ssh root@server1
docker pull discourse/base:2.0.20230502-0058
# если server1 может подключиться к server2
docker save discourse/base:2.0.20230502-0058 | bzip2 | ssh root@server2 docker load
# дождитесь завершения и выйдите из server1
ssh root@server2
cd /var/discourse
./launcher rebuild app
# если server1 не может подключиться к server2
docker save -o /tmp/discourse-base-image.tar discourse/base:2.0.20230502-0058
# передайте файл на server2 через флешку, FTP, дискеты и т. д.
ssh root@server2
docker load -i /tmp/discourse-base-image.tar
cd /var/discourse
./launcher rebuild app