Задать вопрос

Docker: принято ли ставить на продакшене?

При изучении докера, возникло 2 вопроса:

1. Принято ли ставить на продакшене докер? Если нет, то почему и как решается вопрос деплоя и т.д?

2. Если ставить докер на dev (prod) среду, правильно ли понимаю, что поверх любой версии линукса (centos, ubuntu), ставим докер и поверх запускаем наши контейнеры?

И как решается вопрос с монтированием директорий конфигов и логов? Их лучше размещать в директории проекта, или лучше размещать в соответствующих директориях базовой ос? Например для контейнера с nginx, его конфиги монтировать из /etc/nginx/..conf?
  • Вопрос задан
  • 1510 просмотров
Подписаться 8 Простой Комментировать
Решения вопроса 1
1. принято. Если кто-то станет шикать на вас за это — это их проблемы, а у нас свободные нравы!
2. правильно.

С монтированием – по-разному. Как удобнее. Варианты:
  • в проекте папка /docker под ней в подпапке /docker/nginx – конфиги nginx, которые биндятся в контейнер по одному, или всей подпапкой. Удобно, если захочется по-живому редактить конфиги;
  • в контейнер при его билде, инструкциями в его Dockerfile, копируются файлы из папки;
  • прилетает уже готовый-собранный образ, из которого поднимается рабочий контейнер, не запариваясь расположением конфигов и какими-то настройками.

Логи направляются в Stdout контейнера и хранятся Docker'ом. Посмотреть хвост: docker logs --tail 50 имя_контейнера
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 6
Griboks
@Griboks
Стандартный прод сейчас выглядит так: кластер серверов, поверх которых натянуто облако, в котором запускаются контейнеры. Конечный продукт, соответственно, работает как и в любом гугловском облаке - тупо запускается. Остальное - не ваши проблемы.

p.s.
Хотя с другой стороны очень часто встречаются бородатые дядки, которые, разумеется на Windows 10 Enterprise edition, запускают виртуалку WMVare Workstation, в которую устанавливают докер, в котором запускают ваш контейнер. Но это уже их проблемы, что всё через одно место сделано.
Ответ написан
@vitaly_il1
DevOps Consulting
Согласен с Saboteur - все зависит.
При изучении докера
- я советую исходить не из инструментов, а из требования проекта.
Важно, чтобы программа бежала быстро, надежно, с воспроизводимой конфигурацией и деплоем. Этого можно добиться на "железе" (bare metal), виртуалках, контейнерах и проч. (serverless, например).
Ответ написан
Комментировать
Sanes
@Sanes
Сначала убедитесь, что он точно вам нужен. Многие суют его в каждую дырку, даже не задумываясь.
Ответ написан
Комментировать
@rPman
да, нет, не знаю - все три ответа верные

Автоматизация настроек машины возможна своими скриптами или к примеру ansible. Облачные сервисы представляют оплату за использование ресурсов, а это значит может оказаться оправдано разделение своих по виртуальным машинам провайдера (мое мнение - нет, любое готовое облачное решение будет дороже своего, за исключением кратковременного использования и обслуживании редких хабраэффектов).

Докер просто еще один инструмент изоляции и автонастройки, плюс если вспомнить, докер для linux основан на lxc, а это значит почти на любом хостинге возможна реализация своих виртуальных машин с ее помощью.
В конечном случае самодельные инструменты на основе вирутальных машин могут выродиться в копию докера, поэтому все зависит от того, на сколько глубоко нужно залезать в эту нору.
Ответ написан
Комментировать
eigrad
@eigrad
Python-разработчик / Linux-админ
Хороший способ использования докер на проде - kubernetes. Но в целом, не обязательный.
Логи желательно писать в stderr контейнера.
Монтирование директорий конфигов - не лучшая практика. Но если очень хочется, и в вашем конкретном случае удобно - то почему нет?
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev
software engineer
Что значит "принято". Это зависит от проекта и ваших предпочтений.
Нет явных общепринятых решений, так как одинаковых проектов немного.

Если у вас единственное приложение, то под него можно просто настроить сервер и без докера и с докером.
Если компонентов очень много, то чистый докер уже будет мало и сложно, нужно использовать оркестратор (кубернетес или опенщифт). Но можно и просто виртуалки/железки настроить.
Докер налагает свои моменты, но упрощает поддержку на будущее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы