bezrukovPS
@bezrukovPS
Ведущий программист 1С-Битрикс

Docker, lxc и каша в голове или каким образом их лучше приготовить?

Добрый день.

Преследую 2 цели, изучить новые интересные технологии и организовать команду разработчиков.
Что имею: выделенный сервер и root доступ. Что хочу получить develov машину и 3 ноды для разработчиков.
Для реализации хочу использовать контейнерную виртуализацию на основе lxc.

Все выходные изучал docker и немного почитал про настройку lxc и у меня созрела некая каша в голове от всего этого, если кому интересна данная тема помогите пожалуйста разобраться.

Во первых, судя по всему правильным подходом для поднятия ноды это создание не одного контейнера - группы объединённой в линковку. Как лучше разделить ноду? Сама линковка я так понимаю просто связывает ноды в фалах hosts?

Во вторых, каким образом нужно обновлять контейнер, после внесения изменений в image? Я так понимаю контейнер пересоздаётся и все рабочие директории удалятся? И соответственно правильным путём чтобы не повредить файлы сайтов будет добавление внешних папок директивой VOLUME в качестве рабочих каталогов.

В третьих, писали ссылка, что обновление контейнера служит причиной поломке в линковках которые на системном уровне связываются по ID, и чтобы этого не допускать использую aplication уровень над docker в виде или fig или vagrant. Я вот думаю а зачем эти линковки нужны если они просто настраивают файл hosts, его же и ручками можно настроить и обращаться на ip, а не host.

В четвёртых, если docker нужно обвешивать внешним уровнем aplication то это геморой какой-то, плюс захотел покопаться в нодах не подключаясь к ним нашёл папки с длинными id в качестве имени - это не так красиво как на чистом lxc.

Я вот чё думаю, docker мне вообще подходит? разве не лучше использовать просто lxc, я так почитал, вроде всё просто, создаёшь контейнер, заходишь, устанавливаешь по, настраиваешь сеть и копируешь на ноды?

Коллеги помогите упорядочить кашу в голове!:)
  • Вопрос задан
  • 3880 просмотров
Пригласить эксперта
Ответы на вопрос 1
sumej
@sumej
DevOps
Привет
Преследую 2 цели, изучить новые интересные технологии и организовать команду разработчиков.
Что имею: выделенный сервер и root доступ. Что хочу получить develov машину и 3 ноды для разработчико

Ты бы описал что там разработчики разрабатывают =) (сайты/софт/картинки)?

Для разработки, ИМХО, нужно неизменное окружение разработчика + репозиторий, где храняться результаты работы. А так же отдельно должно быть тестовое окружение.

Я обычно делаю окружение разработчика (то к чему нужно подключить IDE):
  • Если это динамический язык, то можно разрезать на докер-контейнеры: интерпретатор языка; сервера, необходимые для работы в своих контейнерах.
  • Если это компилируемый язык, то стараюсь держать всё как можно ближе и на одном контейнере. Дело в том, что держать mysql-dev пакет в одном контенере, а в другом mysql-server - глупо. С другой стороны, если есть некие сервисы, которые собираются с своими ключами, то их в отдельный контейнер(а лучше пакет).


Вообще не важно будет ли у вас 10 контейнеров, или 1. Важно что в внутри. Например у вас есть django 1.4.18 и вы продолжаете разработку на 1.6.х. Что произойдет? Или у вас есть сайт, который писали во времена php 5.2.1, а в dev-окружении 5.2.26, что будет?

По моему мнению у вас должно быть налажено чёткое соответствие окружения разработчика и продакшн. Автотесты на том же jenkins. А если вы меняете версию окружения разработчика - версия продукта так же меняется.

ЗЫ:
Всё это можно делать на docker/lxc/chroot/bare metal/etc — кои инструменты лишь. Мне кажется вы целей своих не понимаете.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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