Тип статьи | Полезные знания |
---|---|
Компетенции | Администратор |
Необходимые права | root |
Версия платформы | 2.24 |
Статус | БЕТА |
Сложность | легко |
Дополнительные сведения |
1. Логин в Яндекс Регистре с помощью iam токена
docker login \ --username iam \ --password <IAM_TOKEN> \ cr.yandex
Вместо <IAM_TOKEN> подставляем свой токен вида
t1.9euelZqSkZmXkszJlsuSy8eWy5ORk-3rnpWaj4uJmc6WnsiLyImVm82Yl8fl8_dEA2hx-e8lWDdX_t3z9wQyZXH57yVYN1f-zef1656VmoydmJTJkIubx8idm5zJmc-O7_0.hw-uRRvhkdkC7gG-scE-fyWbBl2fLQMvOCQZlb-Har-M2Y_OCISA52AA_MqQbVnB4K1Z94cP4ZPncOrZGo8QBQ
Команду вполне возможно придется вводить с sudo, особенно, если run.sh запускает тоже с sudo. Иначе run.sh покажет ошибку авторизации, как будто не видит факта успешного логина.
2. Healthchecks
У трех докер контейнеров есть хелсчеки, это admin, portal and export-service. В некоторых ситуациях, например, при чрезмерной загрузке ресурсов сервера, healthchecks могут вызывать перезапуски этих контейнеров. Ниже пример из platform.yml для увеличения интервалов и кол-ва попыток для принудительного предотвращения перезапуска контейнеров.
Пример из YML
admin: image: ${DOCKER_REPO_PREFIX}${ADMIN_TAG} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:80/health"] interval: 30s timeout: 960s retries: 50 start_period: 40s depends_on: - proxy - mongodb volumes: - /etc/localtime:/etc/localtime:ro - database-backups:/visiology/database_backups - hardwareid:/visiology/admin/app/license/keys/hardwareid - /docker-volume/admin/portalImages:/visiology/admin/portalImages - /docker-volume/admin/useFiscalCalendar:/visiology/admin/useFiscalCalendar environment: - VPROXY_URL=${PLATFORM_URL:-proxy} - POLICY=${POLICY} labels: component: "admin" secrets: - MONGO_AUTH_USER - MONGO_AUTH_PASSWORD << : *deploy_platform << : *logging_options portal: image: ${DOCKER_REPO_PREFIX}${PORTAL_TAG} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:80/health"] interval: 30s timeout: 960s retries: 50 start_period: 40s depends_on: - dashboard-viewer volumes: - /etc/localtime:/etc/localtime:ro labels: component: "portal" << : *deploy_platform << : *logging_options
3. Скрипты, упрощающие работу
install-docker-ubuntu.sh | Установка последней версии Docker и Docker-Compose на Ubuntu. После выполнения установки нужно перезайти в терминал.
4. Долгий запуск докер сервисов в закрытом контуре
Если сервер платформы не имеет выхода в интернет, то есть вероятность, что докер сервисы будут стартовать очень долго. Связано это с недоступностью DNS серверов.
Глубокого исследования в работе этого механизма не проводилось. Есть только некоторые заметки ниже.
Если мы явно заблокируем DNS сервера, например на прокси, то запуск будет быстрый. Связано это с тем, что пакеты моментально отклоняются правилами и никакого ожидания не происходит.
В ином случае много зависит от инфраструктуры, через что запросы на DNS проходят (фаерволлы, маршрутизаторы). Здесь уже большая вероятность в необходимости ожидания таймаута. В разных средах запуск одного сервера может занимать от секунды до десятка секунд и выше. Если умножить на кол-во Docker сервисов, то такие такое время перезапуска платформы может быть не приемлемо.
По всей видимости при создании сервисов Docker обращается по своим делам в реестр. В случае с платформой на момент написания этой заметки используется Яндекс регистр образов с адресом cr.yandex.
Выбор решения зависит от предпочтений администратора сервера. Универсальное быстрое решение - это прописать в /etc/hosts сервера с платформой следующую строчку:
127.0.0.1 cr.yandex
Если для сервера в будущем откроется выход в Интернет (хотя бы к cr.yandex) в том числе для выкачивания Docker образов напрямую из Яндекс регистра, эту запись в hosts естественно нужно убрать.