Как обновить docker?
docs.docker.com/install/linux/docker-ce/ubuntu либо скачать бинарники download.docker.com/linux/static/stable/x86_64 и заменить в /usr/bin предварительно остановив dockerd (не рекомендую, но помогает в некоторых случаях)
26 мар 2019 в 10:07
@TotalPusher, не, бинарники — зло: ru.stackoverflow.com/a/907613/191416. Тока через пакетный менеджер, благо на бубунте всё должно взлететь.
26 мар 2019 в 22:45
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Логика во всех случаях и вкусах GNU/Linux одна и та же — добавляем официальные репозитории Docker и ставим последнюю версию:
GNU/Linux Debian Stretch+
# apt-get install apt-transport-https dirmngr ca-certificates software-properties-common # echo 'deb https://apt.dockerproject.org/repo debian-stretch main' >> /etc/apt/sources.list.d/docker.list # apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys F76221572C52609D # apt-get update # apt-get install docker-engine
GNU/Linux Ubuntu 18.0+
# apt-get install apt-transport-https dirmngr ca-certificates software-properties-common # Добавляем GPG ключи # curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - # add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" # apt update # apt install docker-ce
GNU/Linux Fedora 28+
# dnf -y install dnf-plugins-core # source /etc/os-release # cat
centos/ debian/ fedora/ raspbian/ stalinux/ static/ ubuntu/
Можно конечно использовать NixOS, где контейнеры просто не нужны в виду нового подход доставки пакетов.
Ссылки
- https://download.docker.com/linux/
- https://discourse.nixos.org/t/is-there-much-difference-between-using-nix-shell-and-docker-for-local-development/807
- https://github.com/NixOS/nixops
Как обновить docker-compose на prod-сервере, ничего не поломав?
Добрый день. Я джун, прод меня мало касается, и у меня даже нет туда доступов, но чисто из любопытства было бы интересно узнать мнения более опытных людей на этот счет.
Есть два сервера: тестовый и продакшн. Проблема в том, что на тестовом сервере версия docker-compose выше, чем на проде, и в этой версии есть --env-file флаг для указания файла с переменными окружения для бэкенда, а в версии на проде этого флага нет.
Вот и получается выбор: закостылять свой проект под более старую версию docker-compose, либо же рискнуть и обновить docker-compose до более новой версии, но я понимаю, что это может быть чревато.
Но все же, если подумать, неужели теперь все разработки на этом сервер обречены крутиться на старой версии docker-compose?) Странно это и нелогично. Значит, должен быть какой-то путь, как обновить docker-compose, не поломав при этом проекты.
- Вопрос задан более года назад
- 700 просмотров
Комментировать
Решения вопроса 1
Vitaly Karasik @vitaly_il1
DevOps Consulting
Ответ простой - обновляют docker-compose.
Варианта два:
1) если прод. сервер один, то просят время на downtime, обновляют, проверяют, возвращают в продакшен
2) если серверов несколько, то исключают один сервер из сервиса, обновляют, проверяют, подключают заново, и т.д. со следующими
Ответ написан более года назад
Комментировать
Нравится 3 Комментировать
Ответы на вопрос 1
ДевОпс Сисадмин
"Проблема в том, что на тестовом сервере версия docker-compose выше, чем на проде, и в этой версии есть --env-file флаг для указания файла "
А зачем вы используете разные по версиям ПО среды для тестирования/разработки и в проде? Такого быть не должно, если вы конечно не планируете апгрейд прода и обкатываете новую среду, но это уже не проблемы джуна.
Ответ написан более года назад
Нравится 3 1 комментарий
Sazoks @Sazoks Автор вопроса
Ну, если бы я знал) Так вот получилось. Надеюсь, в скором времени все обновят, а то на старой версии докера сидеть не охота.
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Docker
Почему не запускается compose.yaml на сервере?
- 1 подписчик
- 9 часов назад
- 62 просмотра

- macOS
- +2 ещё
Как избавиться от непонятных символов в docker logs?
- 2 подписчика
- 13 часов назад
- 66 просмотров
Обновление версии docker compose в ubuntu linux
моя система os is ubuntu, текущая docker-compose version was 1.25 но импортированное python-django web app has compose-file with version was 3. 9. как обновить мою систему docker-compose версии , чтобы я мог выполнить веб-приложение
Это зависит от версии Ubuntu, но обычно вы можете обновить docker-compose , установив самую новую возможную версию, как описано в официальной документации .
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose
# Обновление Test IT в Docker Compose
Перед обновлением Test IT до версии 4.3 и выше убедитесь, что дата и время в установках сервера синхронизированы с датой и временем в установках внешней базы данных! Несовпадение даты и времени может привести к нарушениям работы лицензии.
В качестве примера в этой инструкции используется проект с именем testit . Вы можете использовать другое название.
Если в .env и .yml файлах используются пользовательские значения переменных, перенесите их в файлы .env и .yml новой версии Test IT. Все значения в файлах .env и .yml новых версий Test IT заменяются на значения по умолчанию при обновлении.
# Подготовка к обновлению до версии 4.5
# Перед началом работы
Обновление до версии 4.5 осуществляется с версии 4.4.0 и выше.
- Создайте резервную копию установленной системы (рекомендуется). Чтобы перенести информацию из вольюмов со старой версии на новую, имена проектов в обеих версиях должны совпадать. В наших примерах проект называется testit (вы можете использовать другое название).
- Убедитесь, что на компьютере с установленным продуктом достаточно места для создания файла дампа БД Postgres.
- Если вы используете внешнее объектное хранилище MiniO, не включайте в запуск миграции контейнер mc-minio .
- Если вы используете внешние СУБД Postgres, пропустите соответствующие разделы настоящей инструкции.
# Объединение контейнеров MiniO и Postgres
Начиная с версии 4.5 бакет avatars перемещается в контейнер minio . Поэтому перед обновлением необходимо выполнить миграцию бакетов MiniO и их метаданных.
- Из архива поставки Test IT версии 4.5 скопируйте следующие файлы из папки scripts в папку с установочными файлами, с помощью которых была развернута текущая версия Test IT. Файлы должны находиться в той же директории, что и файл docker-compose.yml :
- docker-compose.unite-postgres-minio.yml
- db-unite.sh
- minio-unite.sh
- postgres-init.sql (расположен в корневой папке поставки)
- Перейдите в директорию с установочными файлами, с помощью которых была развернута текущая версия Test IT и остановите контейнеры продукта. Используйте команду:
docker compose -f docker-compose.yml -p testit stop
chmod +x db-unite.sh minio-unite.sh
docker compose -f docker-compose.yml -f docker-compose.unite-postgres-minio.yml -p testit up -d minio avatars.minio mc-minio new-db authdb avatars.db backgrounddb licensedb globalsearchdb
docker logs -f testit-mc-minio-1
Важно В зависимости от объема данных в бакетах, процесс может занять некоторое время.
Убедитесь, что миграция прошла успешно. При успешной миграции по окончании работы скрипта отобразится строка:
Done!
В случае ошибки миграции отобразится строка:
bucket_name> bucket migration failed!
В случае ошибки миграции устраните проблему самостоятельно или свяжитесь с технической поддержкой (support@yoonion.ru). Пример логов с успешным выполнением миграции:
...> 1/1 buckets were imported successfully. mc: IAM info successfully downloaded as SOURCE-iam-info.zip mc: IAM info imported to TARGET from SOURCE-iam-info.zip avatars/ bucket migrated successfully! Source files count: 4 Transferred files count: 4 Done!
docker exec testit-new-db-1 bash /db-unite.sh
Убедитесь, что миграция прошла успешно. При успешной миграции по окончании работы скрипта отобразится строка:
Script finished!
В случае ошибки миграции отобразится строка:
Import FAILED! Check database availability and postgres environment variables!
docker compose -f docker-compose.yml -f docker-compose.unite-postgres-minio.yml -p testit down
# Подготовка к обновлению до версии 4.2
# Перед началом работы
Обновление до версии 4.2 осуществляется с версии 4.0.1 и выше.
Перед обновлением системы выполните следующие действия:
- Создайте резервную копию установленной системы (рекомендуется). Файлы docker-compose.yml и backup.sh находятся в одной директории. Чтобы перенести информацию из вольюмов со старой версии на новую, имена проектов в обеих версиях должны совпадать. В наших примерах проект называется testit (вы можете использовать другое название).
- Убедитесь, что на компьютере с установленным продуктом достаточно места для создания файла дампа БД Postgres.
- Убедитесь, что у вас есть возможность исполнять команды от лица пользователя root.
- Если вы используете внешнее объектное хранилище MiniO и/или внешнюю СУБД Postgres, а не сервисы из поставляемого docker-compose.yml, пропустите соответствующие разделы настоящей инструкции.
# Миграция бакетов MiniO
Начиная с версии 4.2 MiniO Gateway не поддерживается. Поэтому перед обновлением необходимо выполнить миграцию бакетов MiniO и их метаданных.
- Из архива поставки Test IT версии 4.2 скопируйте файлы docker-compose.minio-migrate.yml , minio-migrate.sh , move-migrated-volumes.sh из папки scripts в папку с установочными файлами, с помощью которых была развернута текущая версия Test IT. Файлы должны находиться в той же директории, что и файл docker-compose.yml .
Если вы работаете в режиме оффлайн, в папке с файлами поставки 4.2 также выполните команду для загрузки образов MiniO, необходимых для миграции: docker load -i images.tar.gz .
- Перейдите в директорию с установочными файлами, с помощью которых была развернута текущая версия Test IT и остановите контейнеры продукта. Используйте команду:
docker compose -f docker-compose.yml -p testit stop
chmod +x ./move-migrated-volumes.sh ./minio-migrate.sh
docker compose -f docker-compose.yml -f docker-compose.minio-migrate.yml -p testit up -d minio avatars.minio new-minio new-avatars-minio mc-minio
docker logs -f testit-mc-minio-1
- В зависимости от объема данных в бакетах, процесс может занять некоторое время.
Убедитесь, что миграция прошла успешно. При успешной миграции по окончании работы скрипта отобразится строка:
Done!
В случае ошибки миграции отобразится строка:
bucket_name> bucket migration failed!
В случае ошибки миграции устраните проблему самостоятельно или свяжитесь с технической поддержкой (support@yoonion.ru). Пример логов с успешным выполнением миграции:
...> 1/1 buckets were imported successfully. mc: IAM info successfully downloaded as SOURCE-iam-info.zip mc: IAM info imported to TARGET from SOURCE-iam-info.zip avatars/ bucket migrated successfully! Source files count: 4 Transferred files count: 4 Done!
docker compose -f docker-compose.yml -f docker-compose.minio-migrate.yml -p testit down
sudo -s ./move-migrated-volumes.sh testit new-minio-data-volume new-avatars-minio-data-volume exit
# Миграция СУБД Postgres
Начиная с версии 4.2 в качестве основной системы управления базами данных (СУБД) используется Postgres 14. В процессе обновления необходимо выполнить дамп ваших баз данных (БД) с предыдущей версии Test IT и их восстановление в новой версии. В течение дампа и восстановления баз данных продукт будет недоступен.
БД backgrounddb появляется в версии 4.1. Если вы обновляете систему с версии ниже, чем 4.1, действия с базой и сервисом backgrounddb, приведенные в настоящей инструкции, выполнять не нужно.
- Перейдите в директорию с установочными файлами, с помощью которых была развернута текущая версия Test IT.
- Остановите контейнеры продукта, используя .yml файл, из которого он был запущен. Используйте команду:
docker compose -f docker-compose.yml -p testit down
docker compose -f docker-compose.yml -p testit up -d db authdb avatars.db backgrounddb
docker exec -i testit-db-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_dump -Fc -v --clean --if-exists -h localhost -U postgres testitdb" > dump_path>>/dump_db docker exec -i testit-authdb-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_dump -Fc -v --clean --if-exists -h localhost -U postgres authdb" > dump_path>>/dump_authdb docker exec -i testit-avatars.db-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_dump -Fc -v --clean --if-exists -h localhost -U postgres avatarsdb" > dump_path>>/dump_avatars.db docker exec -i testit-backgrounddb-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_dump -Fc -v --clean --if-exists -h localhost -U postgres backgrounddb" > dump_path>>/dump_backgrounddb
docker compose -f docker-compose.yml -p testit down
docker volume rm testit_db-volume docker volume rm testit_authdb-volume docker volume rm testit_avatars.db-volume docker volume rm testit_backgrounddb-volume
docker compose -f docker-compose.yml -p testit up -d db authdb avatars.db backgrounddb
docker exec -i testit-db-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_restore -Fc -v --clean --if-exists -h localhost -U postgres -d testitdb" dump_path>>/dump_db docker exec -i testit-authdb-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_restore -Fc -v --clean --if-exists -h localhost -U postgres -d authdb" dump_path>>/dump_authdb docker exec -i testit-avatars.db-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_restore -Fc -v --clean --if-exists -h localhost -U postgres -d avatarsdb" dump_path>>/dump_avatars.db docker exec -i testit-backgrounddb-1 /bin/sh -c "PGPASSWORD=F1rstL0g0N! pg_restore -Fc -v --clean --if-exists -h localhost -U postgres -d backgrounddb" dump_path>>/dump_backgrounddb
docker compose -f docker-compose.yml -p testit up -d
# Подготовка к обновлению до версии 4.0.1
Начиная с версии 4.0.1 в конфигурации docker compose была изменена сеть по умолчанию с testit_network на yoonion_network. Чтобы применить данные изменения необходимо выполнить следующие команды.
Если вы обновляете продукт с версии ниже 4.0.0, перед обновлением выполните указания из раздела Подготовка к обновлению до версии 4.0
- Создайте сеть yoonion_network:
docker network create yoonion_network
docker compose -f docker-compose.yml --project-name testit up --detach --timeout 120 --remove-orphans
В файле .env начиная с версии 4.0.1 была добавлена переменная COMPOSE_NETWORK_NAME, определяющая название сети, в которой будут запущены контейнеры. Ее значение по умолчанию yoonion_network.
# Подготовка к обновлению до версии 4.0
В целях повышения безопасности в версии 4.0 процессы в контейнерах запускаются от имени пользователя uid=611(testit) . Чтобы избежать некорректной работы контейнеров webapi и rabbitmqconsumer , при обновлении необходимо запустить скрипт, мигрирующий права в вольюмах контейнеров.
При обновлении с более ранних версий до версии 4.0.0 без выполнения скрипта сервисы webapi и rabbitmqcosumer будут рестартовать из-за ошибки в сервисе лицензий.
- Сделайте резервную копию системы.
- Остановите контейнеры системы:
docker compose -f docker-compose.yml --project-name testit stop --timeout 120
chmod +x scripts/phoenix_migrate_volumes_rights.sh sudo scripts/phoenix_migrate_volumes_rights.sh testit
testit в примерах команд необходимо заменить на название проекта Docker Compose, в котором запущена система. Чтобы определить название проекта, выполните команду docker ps . Префикс к названиям контейнеров является названием проекта.
Важно Для выполнения скрипта могут потребоваться права пользователя root на хост-системе. В таком случае необходимо запускать скрипт с использованием sudo или от имени пользователя root .
При чистой установке версии 4.0 выполнение скрипта не требуется.
# Обновление онлайн
- Создайте новую директорию, скачайте и распакуйте в ней файл для установки онлайн. Актуальная версия установочного файла доступна на странице загрузок
docker compose -f docker-compose.yml --project-name testit up -d --remove-orphans
# Автономное обновление
- Создайте новую директорию, скачайте и распакуйте в ней файл для автономной установки. Актуальная версия установочного файла доступна на странице загрузок
docker load -i images.tar.gz docker compose -f docker-compose.yml --project-name testit up -d --remove-orphans