воскресенье, 2 марта 2014 г.

Docker and tools

       В продолжении темы Docker, пока разворачивал прототип деплоя следующего тысячелетия накопал еще несколько инструментов облегчающих работу с Docker. Не факт что они окажутся полезными, но чтобы уж самому не потерять их:
1. Fig - своего рода менеджер Docker контейнеров. Ты ему скармливаешь "карту сервера" а он сам поднимает все описанные там контейнеры и вместе с необходимыми --link и volume. Замысел очень хороший, эта та функциональность которой действительно очень не хватает докеру. Плюс к тому проект очень активно развивается, последний коммит был всего пару дней назад. Но: это на самом деле дублирование функционала менеджеров конфигурации: Puppet, Salt stack, Ansible. Они пытаются сделать то же самое - но заточенное исключительно под Docker. Плюс в настоящее время он работает только на одном хосте... В общем пока решил его не использовать.
2. Ansible Docker в последних версиях Ansible появилась поддержка Docker. Это конечо радует но по факту толку от нее не много. Пока можно только создавать контейнеры/образы, и получать информацию по ним. Для реального использования этого явно не достаточно. Плюс все это сделано очень не очевидно. Я пробовал сначала писать прототип на Ansible, но пришел к выводу что пока я буду с этим синтаксисом разбираться - я потрачу столько же времени как на fabric. В общем простота fabric всех победила.
3.  Confd - демон который слушает поток событий от etcd и перегенерирует конфиги при изменении информации в etcd. Также может заставить тот или иной процесс перечитать конфиги после перегенерации. Вот пример использования вместе с Docker - http://brianketelsen.com/2014/02/25/using-nginx-confd-and-docker-for-zero-downtime-web-updates/ 
4.  Серия из 10 постов одного из маинтейнеров lxc(основы Docker'a): https://www.stgraber.org/2013/12/20/lxc-1-0-blog-post-series/ Особенно понравился 6 и 7 пост - про безопасность lxc контейнеров и запуск контейнеров от не привелигированного пользователя. Если в кратце - в настоящее время lxc контейнеры не безопасны, так как root контейнера эквивалентен root хоста, соответсвенно если пользователь сумеет выйти за пределы контейнера - пиши пропало. Хорошая новость - в следующей убунте контейнеры можно будет запускать от не привелигированного пользователя, в результате если даже пользователь выйдет за пределы контейнера - он перестанет быть root. Надеюсь Docker быстро сделает поддержку для подобных контейнеров.
5. Dron.io -  Continuous Integration платформа, построенная на основе Docker и go. Вот пример использования: http://jipiboily.com/2014/from-zero-to-fully-working-ci-server-in-less-than-10-minutes-with-drone-docker. Еще у них на github лежат Go библиотеки для работы с github и bitbucket.com