Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
пересобирать с новым конфигом каждый разразные механизмы discovery (в том числе, DNS) это же решают как раз?
vagrant везде одинаковый. Всем ставим одинаковый начальный образ и инструкцию.
И все довольны.
Зачем поверх vagrant ставить docker?
Сударь вы либо целенаправленно лжете, либо наивно заблуждаетесь.
Размер образа тот же что у docker.
Память, ну да, наверно. 50-100 мегабайт на виртуальную машину это финиш…
А в lxc у вас все контейнеры сделаны грамотно, стартует только один нужный процесс, ну ну. Верю.
А что докер без lxc уже работать может?
Контейнеры вещь давно известная, и lxc из них не самая опробированная технологи.
Namespace — как бы и без докера сами по себе живут
«Луковичная файловая система» — тоже без докера имею место быть.
Так что же докер такое?
при разработке это не реализуемо, ведь у всех разные ОС.
Автор использует ansible вместо Docker Machine.
> Зачем вы предлагаете автору почитать про Compose, если он явно написал, что пользовалься fig'ом и ему он не понравился?
Конечно, не понравился, когда проще на коленке писать полотна bash'a
DNS решается Docker Compose, который по links прописывает нужные обновления в контейнеры в /etc/hosts. Анонсировать ничего не надо. Масштабирование — Docker Swarm + Docker Compose scale. Балансировкой заниматься должен балансер (Nginx/HAProxy/...), вот как можно это настроить — www.centurylinklabs.com/auto-loadbalancing-with-fig-haproxy-and-serf/
То для чего у автора используется ansible вообще не имеет к тому для чего предначначен Docker Machine никакого отношения. Docker Machine предназначен для создания и управления виртуалками (локальными или в облаке) с установленным docker'ом.Виноват, снова Docker Swarm с Docker Machine спутал, действительно Docker Machine в конкретном топике ни при делах. В общем, суть в том, что если поднять на своих серверах Docker Swarm, то не нужно заходить по ssh (ansible) на эти машины и делать docker run.
По вопросу кастомных наколеночных решений я с вами согласен. Но справедливости ради надо сказать, что swarm и compose были анонсированы совсем недавно и до сих пор они еще не production-ready.Да, Swarm совсем свежий, но Compose (fig) развивается давно. Тут сложно сказать что менее production ready — наколеночный костыльный скрипт или специализованное решение. Но выбор за каждым. Просто иногда лучше не советовать ничего, чем советовать вредные подходы.
Ну как же анонсировать ничего не надо, если по вашей же ссылке используется serf для service discovery?Тут я опять неверно выразился. В случае реализации того решения, что у автора, без динамического масштабирования, анонсировать ничего не надо. А в красивом подходе, конечно прийдётся что-то в духе Serf использовать.
Ещё вопросы?
qq1:
image: ubuntu
links:
- qq2
command: "bash -c 'for i in `seq 1000`; do echo $i | nc qq2 10000 ; sleep 1; done'"
qq2:
image: ubuntu
command: "bash -c \"while true; do bash -c 'for i in `seq 1000`; do echo REPLY $(getent hosts `hostname`) ; sleep 0.5; done' | nc -l -p 10000 0.0.0.0 ; done\""
$ docker-compose up
$ docker-compose restart qq2
$ sudo docker-compose up
Recreating tmp_qq2_1...
Recreating tmp_qq1_1...
Attaching to tmp_qq2_1, tmp_qq1_1
qq2_1 | 1
qq1_1 | REPLY 172.17.1.2 de8138e439ae
qq1_1 | REPLY 172.17.1.2 de8138e439ae
...
...
qq2_1 | 11
qq1_1 | REPLY 172.17.1.5 de8138e439ae
qq1_1 | REPLY 172.17.1.5 de8138e439ae
$ cat docker-compose.yml
qq1:
image: ubuntu
links:
- qq2
command: "bash -c 'while true; do data=$RANDOM; echo REQUEST: $data; nc qq2 10000 <<< $data; sleep 1; done'"
qq2:
image: ubuntu
command: "bash -c 'while true; do echo RESPONSE: $(nc -l 10000); sleep 0.5; done'"
$ docker-compose up
Recreating compose_qq2_1...
Recreating compose_qq1_1...
Attaching to compose_qq2_1, compose_qq1_1
qq2_1 | RESPONSE: 24896
qq1_1 | REQUEST: 24896
qq1_1 | REQUEST: 16226
qq2_1 | RESPONSE: 16226
qq1_1 | REQUEST: 23182
qq2_1 | RESPONSE: 23182
qq1_1 | REQUEST: 10674
qq2_1 | RESPONSE: 10674
qq1_1 | REQUEST: 7200
qq2_1 | RESPONSE: 7200
qq1_1 | REQUEST: 30534
qq2_1 | RESPONSE: 30534
... тут происходит docker-compose restart qq2 ...
qq1_1 | REQUEST: 7482
qq1_1 | REQUEST: 30388
qq1_1 | REQUEST: 21044
qq1_1 | REQUEST: 4143
qq1_1 | REQUEST: 11100
qq1_1 | REQUEST: 21941
qq1_1 | REQUEST: 5191
qq1_1 | REQUEST: 27923
P.S. «он у меня не заработал» — ей богу вам тестировщики тоже баги репортят «у нас что-то сломалась»? Как именно не заработал?
$ docker-compose up
Recreating compose_qq2_1...
Recreating compose_qq1_1...
Attaching to compose_qq2_1, compose_qq1_1
qq2_1 | 1
qq2_1 | 14
qq2_1 | 27
qq2_1 | 40
qq2_1 | 53
qq2_1 | 66
qq2_1 | 78
qq2_1 | 91
qq2_1 | 104
Всё работает, просто вы вывод больше не видите от qq2 в этой консоли
Я знаком с понятием двусторонний. Приведите пример такого проекта!
Docker и костыли в продакшене