Лучшая организация виртуальных машин

Модератор: Модераторы разделов

Аватара пользователя
netvis
Сообщения: 94

Re: Лучшая организация виртуальных машин

Сообщение netvis »

serzh-z писал(а):
17.02.2015 19:03
netvis писал(а):
17.02.2015 15:56
2) Как на хабе docker'а выбрать рабочий вариант пусть все того же DNS сервера? Там их много...
Важный момент: не стоит запускать все непроверенные образы подряд. У официальных образов (postgres, rails, ubuntu и т.д.) есть специальная пометка. Никто не мешает, например, мне создать свой образ на базе postgres, который, дополнительно, будет, скажем, сливать все данные из БД на мой сервер.


Да, вот как раз это и хотел спросить: по идее - все данные образа лежат в обычных файлах в каталоге /var/lib/... - то есть я могу просто туда что-то дописать/посмотреть и это будет работать? Вернее, даже не так - если в этих каталогах для образов я не найду ничего подозрительного - это значит все ок?
Если отладка - это устранение ошибок, то программирование - это их создание ...
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Лучшая организация виртуальных машин

Сообщение serzh-z »

netvis писал(а):
17.02.2015 19:08
Вернее, даже не так - если в этих каталогах для образов я не найду ничего подозрительного - это значит все ок?
Ну примерно так. Но если запустить, скажем, какой-нибудь образ evil/samba и расшарить с ним каталог хост-машины, то вместо (или вместе) с реальным Samba может запускаться какой-нибудь злой скрипт. Который ничего не стоит замаскировать среди "хороших" файлов в образе.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Лучшая организация виртуальных машин

Сообщение Bizdelnick »

Поэтому я и написал, что надо брать образы с dockerfile.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Лучшая организация виртуальных машин

Сообщение serzh-z »

Bizdelnick писал(а):
17.02.2015 19:19
Поэтому я и написал, что надо брать образы с dockerfile.
Тебе не поможет чей-то Dockerfile, в котором стоит "FROM good-gyu/mariadb" и Dockerfile от good-gyu/mariadb, в котором "FROM another-good-gyu/custom-mariadb" и т.д. Чем просматривать всю цепочку образов, лучше сразу держаться от потенциальных проблем подальше, если есть необходимость работать с приватными данными или шарить приватные образа.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Лучшая организация виртуальных машин

Сообщение Bizdelnick »

serzh-z писал(а):
17.02.2015 20:13
Тебе не поможет чей-то Dockerfile, в котором стоит "FROM good-gyu/mariadb" и Dockerfile от good-gyu/mariadb, в котором "FROM another-good-gyu/custom-mariadb" и т.д.

Отчего же, поможет. Посмотрю на это безобразие и сразу пойму, что не надо это юзать.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
MrClon
Сообщения: 838
ОС: Ubuntu 10.04, Debian 7 и 6

Re: Лучшая организация виртуальных машин

Сообщение MrClon »

netvis писал(а):
17.02.2015 19:08
Вернее, даже не так - если в этих каталогах для образов я не найду ничего подозрительного - это значит все ок?

Только если раньше ты работал великим инквизитором. В противном случае я-бы не доверял настолько сильно своим выявительным способностям и использовал минимальную систему и софт из репозиториев своего любимого дистрибутива (или из исходников с официальных сайтов).
Спасибо сказали:
Аватара пользователя
netvis
Сообщения: 94

Re: Лучшая организация виртуальных машин

Сообщение netvis »

Здравствуйте.
То есть, как я понял, каждый контейнер содержит в себе ОС + обвязку из прикладного ПО - того, что нужно мне? Так а если ОС в контейнерах разные - как осуществляется их изоляция - ведь они же разные по структуре и расположению файлов (взять тот же Centos и Gentoo)?
И в чем будет заключаться экономия?
И еще не могу понять зачем нужна CoreOS - в чем ее роль?
Если отладка - это устранение ошибок, то программирование - это их создание ...
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Лучшая организация виртуальных машин

Сообщение Bizdelnick »

Экономия - в том, что 1) по сравнению с обычной виртуалкой или даже контейнером, в котором установлена полная ОС, места на диске занимается меньше, 2) потребляется меньше ОЗУ и 3) меньше грузится процессор.
Смысл CoreOS только в том, что в ней нет ничего лишнего, кроме того, что требуется для запуска контейнеров.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
netvis
Сообщения: 94

Re: Лучшая организация виртуальных машин

Сообщение netvis »

Можно еще вопрос: почему, если я создаю контейнер так
docker run --name="MySQL_TEST" -v /ext1/storage:/ext1 -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql

То я потом не могу к нему подключиться:
docker attach c54f27f0e7f530ebfbc1886e5419582f56ea35233579204e663eae8ed23efcb8

Здесь все зависает и даже Ctrl-C не помогает.
Обязательно ли -t -i добавлять?

И еще: в чем отличие run от start? run - это, я так понял, для изменения параметров, а start - чисто запуск?
Если отладка - это устранение ошибок, то программирование - это их создание ...
Спасибо сказали:
Аватара пользователя
netvis
Сообщения: 94

Re: Лучшая организация виртуальных машин

Сообщение netvis »

netvis писал(а):
20.02.2015 10:24
Можно еще вопрос: почему, если я создаю контейнер так
docker run --name="MySQL_TEST" -v /ext1/storage:/ext1 -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql

То я потом не могу к нему подключиться:
docker attach c54f27f0e7f530ebfbc1886e5419582f56ea35233579204e663eae8ed23efcb8

Здесь все зависает и даже Ctrl-C не помогает.
Обязательно ли -t -i добавлять?

И еще: в чем отличие run от start? run - это, я так понял, для изменения параметров, а start - чисто запуск?


Все. Кажись я сам протупил - там же только mysql - там нет bash, поэтому такое зависание...
Ребят, а еще вопрос - а как лучше распорядиться контейнерами - один сервис на контейнер или же сделать несколько машин, сгруппировать в них сервисы по каким-то факторам?
Если отладка - это устранение ошибок, то программирование - это их создание ...
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Лучшая организация виртуальных машин

Сообщение BigBrother »

netvis писал(а):
05.02.2015 18:07
А кто-нибудь использует это и если да, то для чего?

Держу в докере

Код: Выделить всё

fedora, nginx, passenger, redmine, mysqld, sshd
работает нормально. Но если смотреть в корень и делать все по феншую, то все это надо разнести по разным контейнерам и использовать dockerlinks. На прошлой работе разворачивали symfony проекты - тоже все ок. Но есть момент, как например правильно стопнуть mysqld если например надо обновить докер или перегрузить сервер? В случае если есть доступ по ссш в контейнер, то вопрос решается с помощью supervisord или базовой системой инициализации которая доставляется в контейнер: заходим в контейнер, останавливаем бд, а потом все остальное. Но как быть если бд это отдельный контейнер где нет ссш и шела? Во время написания этого поста вспомнил, что в последних версиях докера добавили опцию exec и придумал, что можно попробовать перед остановкой бд-контейнера делать

Код: Выделить всё

docker exec container-name kill mysqld
или более правильный вариант

Код: Выделить всё

mysqladmin -uroot -p -h127.0.0.1 --protocol=tcp shutdown

после чего, контейнер сам остановится.
netvis писал(а):
17.02.2015 15:56
Здравствуйте, коллеги.
Следуя вашему совету, решил поиграться с docker на Debian. Мне тут кое-чего непонятно:
1) К примеру, мне нужно поднять bind9 сервис. Мне для этого нужно вытянуть образ ubuntu/debian и туда ставить bind? Или же есть чисто образ bind, без ОС? То есть, другими словами - обязательна ли ОС в контейнере?
2) Как на хабе docker'а выбрать рабочий вариант пусть все того же DNS сервера? Там их много...
3) Есть ли какие-либо советы по оптимизации хостовой ОС для работы под докером? Я поискал и нашел только советы для ускорения удаления, но, быть может, есть что-то еще?

1) несколько вариантов:
а) сделать свой докерфайл и собрать образ
б) взять готовый образ с хаба
Я всегда делаю свои образы (кроме базовой системы), т.к. могу заделать их так, как мне надо и конкретно под задачу, к тому же появляется лучшее понимание как работает докер.
2) методом тыка и админской интуиции
3) по-умолчанию, все барахло докера хранится в /var/lib/docker и часто занимает много места и дисковой производительности, по этому можно натянуть эту папку в ssd диск.
Спасибо сказали:
Аватара пользователя
netvis
Сообщения: 94

Re: Лучшая организация виртуальных машин

Сообщение netvis »

Здравствуйте.
Вещь (докер) оказалась очень хорошей, изучаю - есть кое-какой прогресс. Правда времени не на все хватает.
Позвольте вопросы:
1) Если я качаю образ, например DNS сервер BIND9. Bash в докер-файле не упоминается. Получается, что сделать attach к контейнеру и получить консоль невозможно? Нужно обязательно запускать интерпретатор через run?
2) Я запутался в предназначении команды run - ведь есть же пара create/start, в чем отличие? Разве что только за один раз сделать все что нужно...
3) Непонятно вот что: если я на хост-систему с Дебианом ставлю контейнер с Сентосью, то как производится разделение? Ведь у Сентоси другая версия ядра, расположение файлов и пр.

Спасибо!

BigBrother, спасибо - ответили на многие вопросы!
Если отладка - это устранение ошибок, то программирование - это их создание ...
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Лучшая организация виртуальных машин

Сообщение BigBrother »

netvis писал(а):
26.02.2015 16:34
1) Если я качаю образ, например DNS сервер BIND9. Bash в докер-файле не упоминается. Получается, что сделать attach к контейнеру и получить консоль невозможно? Нужно обязательно запускать интерпретатор через run?
2) Я запутался в предназначении команды run - ведь есть же пара create/start, в чем отличие? Разве что только за один раз сделать все что нужно...


1) Да, не получится, на то он и докер. Что значит "запускать интерпретатор через run"?
2) run - создает и автоматически запускает процесс (контейнер) на хостовой машине. start/stop - вкл./выкл. ранее созданный контейнер. Зачем create, хз.
Спасибо сказали:
Аватара пользователя
netvis
Сообщения: 94

Re: Лучшая организация виртуальных машин

Сообщение netvis »

Попрошу вашего совета - нигде не могу найти способ это реализовать.

Необходимо дать статику контейнеру, чтобы потом сделать проброс через NAT наружу. В общем, с этим разобрался (кому интересно - вот тут http://blog.oddbit.com/2014/08/11/four-way...nnect-a-docker/ достаточно подробно и полно описано).
Но теперь мне нужно следующее: до создания контейнера вызвать команду, чтобы создать связку veth интерфейсов и уже перед стартом главного сервиса в контейнере вызвать еще пару команд, чтобы подключиться к виртуальному свитчу и пр.
Я нашел решение: в контейнере а автозагрузку пишу нужные команды, а сам контейнер пускаю из командного файла. Не покидает мысль что я что-то не так делаю.
И еще вопрос: как после перезагрузки хост-системы автоматом пускать все контейнеры?

Спасибо.
Если отладка - это устранение ошибок, то программирование - это их создание ...
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Лучшая организация виртуальных машин

Сообщение serzh-z »

netvis
1. См. nsenter или docker-enter
2. `docker run` создаёт _новый_ контейнер на базе любого существующего образа (которым может быть другой контейнер) и запускает в нём команду. `docker start` запускает _существующий_ контейнер. Эти команды ожидают разные аргументы - имя образа или ID контейнера
3. Общее ядро, но разные корневые каталоги, дерево процессов и виртуальные сетевые интерфейсы. Это очень близко к chroot, но изолируется не только ФС, а так же и другие ресурсы

netvis писал(а):
02.03.2015 10:14
И еще вопрос: как после перезагрузки хост-системы автоматом пускать все контейнеры?
Нужно запускать/создавать контйнеры с "--restart=always": `docker run --restart=always ...` или писать свой сервис systemd. Оба варианта распространенны и вполне удобны.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Лучшая организация виртуальных машин

Сообщение serzh-z »

netvis писал(а):
02.03.2015 10:14
Необходимо дать статику контейнеру, чтобы потом сделать проброс через NAT наружу.
Не уверен, что стоит выставлять все контейнеры наружу таким образом. Как минимум, это может привести к коллизии адресов, если для адреса для контейнеров назначаются в обход DHCP-сервера. Если нужно просто позволить кому-то извне подключаться к сервису внутри контейнера, то можно использовать "-p" или "-P" при запуске/создании контейнера. В этом случае, проброс через iptables docker сделает сам.
Спасибо сказали:
Аватара пользователя
netvis
Сообщения: 94

Re: Лучшая организация виртуальных машин

Сообщение netvis »

serzh-z писал(а):
02.03.2015 13:03
netvis писал(а):
02.03.2015 10:14
Необходимо дать статику контейнеру, чтобы потом сделать проброс через NAT наружу.
Не уверен, что стоит выставлять все контейнеры наружу таким образом. Как минимум, это может привести к коллизии адресов, если для адреса для контейнеров назначаются в обход DHCP-сервера. Если нужно просто позволить кому-то извне подключаться к сервису внутри контейнера, то можно использовать "-p" или "-P" при запуске/создании контейнера. В этом случае, проброс через iptables docker сделает сам.


Так как раз потом и проблема возникает: как мне узнать IP адрес контейнера, чтобы я смог наружу проброс организовать. То есть, как закрепить адрес за контейнером. Я так понял, что такого механизма нет (ну кроме того, что я выше показал - через мост и пр.).
У меня не iptables - у меня железное устройство по типу Zyxel USG - то есть я руками разруливаю доступы... Поэтому нужна статика.
Если отладка - это устранение ошибок, то программирование - это их создание ...
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Лучшая организация виртуальных машин

Сообщение Bizdelnick »

Не надо Вам на железке ничего разруливать. Разруливать всё, связанное с контейнерами, - дело docker'а. Через него выставляете нужные порты наружу, а извне обращение идёт по адресу хостовой машины. RTFM, короче.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
netvis
Сообщения: 94

Re: Лучшая организация виртуальных машин

Сообщение netvis »

Так это понятно. Но это слишком затратно: получается, что на машине может висеть только один http-сервер, к примеру.
Если отладка - это устранение ошибок, то программирование - это их создание ...
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Лучшая организация виртуальных машин

Сообщение Bizdelnick »

netvis писал(а):
02.03.2015 15:14
на машине может висеть только один http-сервер

Почему? Хоть 65535.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Лучшая организация виртуальных машин

Сообщение BigBrother »

netvis писал(а):
02.03.2015 14:46
как мне узнать IP адрес контейнера, чтобы я смог наружу проброс организовать.

docer inspect

Код: Выделить всё

$ sudo docker inspect --format='{{.NetworkSettings.IPAddress}}' $INSTANCE_ID


netvis писал(а):
02.03.2015 14:46
То есть, как закрепить адрес за контейнером. Я так понял, что такого механизма нет (ну кроме того, что я выше показал - через мост и пр.).

Для лучшего понимания работы докер-сети, тебе сюда docker network configuration

Bizdelnick писал(а):
02.03.2015 15:21
netvis писал(а):
02.03.2015 15:14
на машине может висеть только один http-сервер

Почему? Хоть 65535.

Не совсем так. Если использовать опцию "-p" докера, тогда проброс 80 порта с хостовой машины в контейнер, можно сделать только один - все остальные пробросы будут уже не с 80 порта, т.к. он на хостовой машине уже занят docker-proxy`ей. При этом, каждый конейнер может внутри себя слушать 80 порт. Чтобы решить эту задачу, можно на хостовой машине поставить nginx, который будет слушать 80 порт, и в зависимости от hostname`а запрашиваемого ресура, будет проксировать в нужный докер.

Код: Выделить всё

http-req -> nginx -> docker-proxy -> docker container.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Лучшая организация виртуальных машин

Сообщение Bizdelnick »

BigBrother писал(а):
02.03.2015 15:55
Если использовать опцию "-p" докера, тогда проброс 80 порта с хостовой машины в контейнер, можно сделать только один - все остальные пробросы будут уже не с 80 порта, т.к. он на хостовой машине уже занят docker-proxy`ей

А кто сказал, что HTTP-сервер должен быть обязательно на 80 порту? Это уже настройками того самого зухеля перенаправлять пакеты на нужный порт.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Лучшая организация виртуальных машин

Сообщение BigBrother »

Bizdelnick писал(а):
02.03.2015 16:03
А кто сказал, что HTTP-сервер должен быть обязательно на 80 порту? Это уже настройками того самого зухеля перенаправлять пакеты на нужный порт.

Никто. Но если в докере запустить два рабочих проекта (например два интернет-магазина, в разных контейнерах), то какие покупатели захотят вводить в браузере www.magazin.ru:81 или www.magazin.ru:8080 ?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Лучшая организация виртуальных машин

Сообщение Bizdelnick »

Причём тут покупатели? Если не жалко белых адресов, можно их на внешний интерфейс шлюза повесить, а он уже пришедшие на 80 порт того или иного адреса пакеты пусть натит на нужный порт машины с докером. Хотя в случае веб-сервера проще обратный прокси поднять, который бы этим рулил, и адреса сэкономить.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Лучшая организация виртуальных машин

Сообщение serzh-z »

BigBrother
nginx, upstream и proxy_pass в помощь.
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Лучшая организация виртуальных машин

Сообщение BigBrother »

Bizdelnick писал(а):
02.03.2015 20:01
Причём тут покупатели? Если не жалко белых адресов, можно их на внешний интерфейс шлюза повесить, а он уже пришедшие на 80 порт того или иного адреса пакеты пусть натит на нужный порт машины с докером. Хотя в случае веб-сервера проще обратный прокси поднять, который бы этим рулил, и адреса сэкономить.

Интернет магазин я привел для примера. Можно взять любой другой сервис, которым будет пользоваться аудитория и которая не захочет вводить номера портов в строке браузера.
Жалко, не жалко, если адрес всего один?

serzh-z писал(а):
02.03.2015 20:57
BigBrother
nginx, upstream и proxy_pass в помощь.

Я это предлагал выше.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Лучшая организация виртуальных машин

Сообщение Bizdelnick »

BigBrother писал(а):
02.03.2015 22:41
Жалко, не жалко, если адрес всего один?

А если без если? ТС русским языком написал, что адресов у него несколько. Что делать, чтобы сэкономить адреса (читай - использовать только один), впрочем, я, а потом serzh-z, тоже сказал.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
netvis
Сообщения: 94

Re: Лучшая организация виртуальных машин

Сообщение netvis »

Ура! Я сделал то, что хотел на Докере - раздал всем как бы статику. Теперь могу адресовать каждый контейнер отдельно, не пробрасывая порты.
Параллельно заинтересовался OpenVZ. Хочу спросить несколько вопросов:
1) Насколько жив проект? У них ядро застряло на 2.6.32, понятно, что не сильно старое, но все же есть ли у него будущее?
2) Есть ли где-нибудь (кроме хабра - там одна статья есть) какие-нибудь статьи по тюнингу и обеспечению безопасности контейнеров?
3) Что за файловая система simfs? Это своя, внутренняя ФС?
4) Какое вообще ваше мнение о данном продукте? Чем он лучше докера/LXC, чем хуже?

Спасибо!
Если отладка - это устранение ошибок, то программирование - это их создание ...
Спасибо сказали:
Ответить