@docker_ru
Docker — русскоговорящее сообщество

Обсуждаем вопросы, посвященные Docker🐳, Docker Swarm и всей экосистеме. Обмениваем идеями, новостями и решаем пробемы. Вам могут быть полезны: @coreos_ru, @kubernetes_ru, @devops_ru, @rkt_ru Рекомендуем сразу отключить уведомления для удобства

2608 members

Архив канала @docker_ru 29 марта 2017 г.

10:54:14 ДП
User 247386770
User 108296207
1) Подсмотреть команду, которой этого демона запускает инит-скрипт (или кто там его запускает сейчас)
2) Именно эту команду задать в докерфайле (можно с модификациями по вкусу)
3) Если апач по каким-то причинам умирает, то для этой проблемы не нужны никакие супервизоры, в самом докере есть restart policy
Ммм, за  restart policy благодарствую
11:29:46 ДП
User 93641574
Добрый день, коллеги. Не подскажите, имеется три контейнера запускающихся через docker-compose.  Вопрос в их правильном бекапе. Правильно ли будет остановить каждый из них через docker-compose stop и забекапить каждый по отдельности через docker commit?
11:35:50 ДП
User 183627422
всю систему чтоль хочешь бэкапить?
11:36:17 ДП
User 183627422
правильнее волюмы создать внутрь в нужные папки\файлы
11:37:04 ДП
User 183627422
и уже бэкапить волюмы если уж так надо
11:59:12 ДП
User 199194369
бэкап докера звучит странно
11:59:29 ДП
User 199194369
докер создан чтобы умирать)
12:00:14 ПП
User 199194369
ну если хочется извращений, то лучше всего сделать отдельный дата-сервис и бекапить его, вольюмы достаточно проблематично доставать
12:00:59 ПП
User 93641574
Три контейнера: nginx, postgres, nbox фронтенд. Хочу что бы база была забекаплена как минимум...
12:01:27 ПП
User 199194369
бекапить нгинкс смысла нет
12:01:46 ПП
User 199194369
постгре можно бекапить снаружи
12:02:12 ПП
User 199194369
фронтенд максимум содержит фолдер с аплоадами, больше там бекапить нечего
12:02:18 ПП
User 93641574
Nginx если конфиги не менял, то да, нет смысла бекапить. А зачем снаружи?
12:02:31 ПП
User 93641574
чем docker commit не катит?
12:02:35 ПП
User 199194369
чтобы не останавливать, можно настроить реплику
12:03:04 ПП
User 93641574
А если остановка для сервиса не критична? Разве бекап контейнера не является более правильным вариантом?
12:03:32 ПП
User 199194369
вся суть докера в том, что у него фс с ревизиями
12:03:59 ПП
User 199194369
чем больше изменений, тем больше слоев, а это очень интересная игра
12:05:50 ПП
User 199194369
можешь попробовать поиграться с docker export/import
12:06:44 ПП
User 93641574
дык разве база не в памяти висит? Правильная остановка базы должна положить разницу от предыдущего слоя на диск. Docker-commit сделает снапшот-разницу между прошлым состоянием диска и текущим.
12:08:34 ПП
User 199194369
насколько я помню у докера есть дефолтный лимит на память используемую контейнером
12:09:17 ПП
User 93641574
А всё что не влезло в своп?
12:10:08 ПП
User 199194369
вот на докхабе есть прям образ https://hub.docker.com/r/wetransform/dockup/
12:11:20 ПП
User 209288485
кто-нибудь использует keepalived? есть смысл его в контейнер сувать и потом с маршрутизацией private-public IP париться?
12:30:27 ПП
User 93641574
User 199194369
вот на докхабе есть прям образ https://hub.docker.com/r/wetransform/dockup/
Спасибо
12:31:23 ПП
User 247386770
User 108296207
1) Подсмотреть команду, которой этого демона запускает инит-скрипт (или кто там его запускает сейчас)
2) Именно эту команду задать в докерфайле (можно с модификациями по вкусу)
3) Если апач по каким-то причинам умирает, то для этой проблемы не нужны никакие супервизоры, в самом докере есть restart policy
Чот не нагуглилось толковой темы для docker-compose, в частности не ясно как там сделать 
docker run --restart=always redis
12:32:36 ПП
User 46399435
restart: always
12:32:38 ПП
User 108296207
services:
    nginx:
        build: ./nginx
        restart: always
12:33:37 ПП
User 247386770
О, спс
12:34:12 ПП
User 199194369
у докера все еще есть та детская болезнь на запуск зависимых сервисов?
12:34:34 ПП
User 108296207
Что за болезнь?
12:34:35 ПП
User 199194369
помню, делали в докер-композе wait4mysql
12:34:58 ПП
User 199194369
потому что вебморда стартовала раньше чем инициализировалась база
12:35:07 ПП
User 108296207
Есть depends_on:
services:
    nginx:
        build: ./nginx
        restart: always
        depends_on:
          - data
12:35:15 ПП
User 199194369
а не помогает)
12:36:00 ПП
User 108296207
А, ну наверное база стартует долго, докер запускает процесс - и считает его "запущенным"
12:36:01 ПП
User 199194369
это в первый раз, когда мне понадобился restart: always и я его быстро загуглил
12:36:37 ПП
User 199194369
но это не спасло от написания скрипта на ожидание
12:36:37 ПП
User 247386770
User 108296207
Есть depends_on:
services:
    nginx:
        build: ./nginx
        restart: always
        depends_on:
          - data
dockerproject_drupal_1 exited with code 137
=(((
12:37:09 ПП
User 199194369
137 это убийство kill 9
12:37:36 ПП
User 247386770
  command: apachectl -f /etc/httpd/conf/httpd.conf -e info -DFOREGROUND
  restart: always
12:37:47 ПП
User 247386770
Для проверки жму ctrl+c
12:38:00 ПП
User 247386770
И оно просто умирает по 137
12:38:20 ПП
User 199194369
на деле это означает что что-то есть в CMD
12:38:32 ПП
User 199194369
и кто-то пытается что-то запустить помимо этого)
12:38:41 ПП
User 46399435
Вам не нужен restart: always. вам нужен restart: on-failure
12:38:56 ПП
User 247386770
CMD watch netstat -nlpt
КОторое не работает вообще
12:39:24 ПП
User 247386770
User 46399435
Вам не нужен restart: always. вам нужен restart: on-failure
Оно предполагает ограниченное число перезапусков
12:39:56 ПП
User 199194369
а зачем рестарт?
12:40:55 ПП
User 247386770
Чтоб жило всегда же
12:41:51 ПП
User 199194369
тогда unless-stopped или что-то в эту степь
12:42:17 ПП
User 46399435
User 247386770
Чтоб жило всегда же
даже если остановили руками ?
12:42:36 ПП
User 199194369
и советую поменять CMD на родное CMD ["nginx", "-g", "daemon off;"]
12:42:55 ПП
User 46399435
User 247386770
Оно предполагает ограниченное число перезапусков
если у вас все падает надо не подорожник прекладывать рестартом а баги исправить)
12:42:56 ПП
User 199194369
оно запускает именно то, что ожидается от контейнера
12:43:42 ПП
User 199194369
контейнер не делает магии, если вы пишете свой докерфайл - делайте красиво)
12:44:30 ПП
User 199194369
можно еще затюнить и выставить симлинки логов на /dev/stderr
12:50:42 ПП
User 123648726
User 199194369
но это не спасло от написания скрипта на ожидание
делал так — разносил по разным композ-файлам и писал фаб таску, которая сначала поднимала первым композ файлом, запускала скрипт, который чекал, все ли поднялось, а потом поднимала вторую часть
12:51:04 ПП
User 123648726
увы, красивее не придумалось
12:56:34 ПП
User 247386770
User 46399435
даже если остановили руками ?
Ну какая разница чем? Упало, рестартани, как это делает supervisord
12:57:10 ПП
User 247386770
User 199194369
контейнер не делает магии, если вы пишете свой докерфайл - делайте красиво)
Вот за этим я сюда и пришёл.Чтобы подсказали бестпрактис
12:59:45 ПП
User 46399435
User 199194369
но это не спасло от написания скрипта на ожидание
https://github.com/vishnubob/wait-for-it
github.com/vishnubob/wait-for-it
Pure bash script to test and wait on the availability of a TCP host and port - vishnubob/wait-for-it
01:09:46 ПП
User 199194369
спасибо, но меня и тогда смутило его решение, в проде используется dockerize https://github.com/jwilder/dockerize/
github.com/jwilder/dockerize
Utility to simplify running applications in docker containers - jwilder/dockerize
01:57:10 ПП
User 195343592
https://cs7051.userapi.com/c638316/v638316370/3a65f/hvJV3S7Dtvg.jpg
cs7051.userapi.com/c638316/v638316370/3a65f/hvJV3S7Dtvg.jpg
02:07:19 ПП
User 123648726
User 46399435
https://github.com/vishnubob/wait-for-it
github.com/vishnubob/wait-for-it
Pure bash script to test and wait on the availability of a TCP host and port - vishnubob/wait-for-it
интересный подход. а если мне монгу ждать, то мне дергать 27017 что ли?
02:07:26 ПП
User 123648726
интересно, что она ответит когда будет готова
02:11:00 ПП
User 46399435
User 123648726
интересный подход. а если мне монгу ждать, то мне дергать 27017 что ли?
хз, в монге можно было простой сервис накатать внутри нее? вот когда он ответит тогда норм
02:11:11 ПП
User 46399435
ну или просто спрашивать какой нибудь ключ
02:11:24 ПП
User 46399435
видел варианты сложнее чем просто ждать порт
02:12:22 ПП
User 123648726
User 46399435
хз, в монге можно было простой сервис накатать внутри нее? вот когда он ответит тогда норм
это костыль страшный)
02:12:51 ПП
User 123648726
мой скрипт чекал логи и ждал строчку конкретную. типа "Ready and waiting for connections on 27017"
02:13:02 ПП
User 46399435
Костыль - это монга в проде! Все остальное не запрещено)
02:13:14 ПП
User 46399435
User 123648726
мой скрипт чекал логи и ждал строчку конкретную. типа "Ready and waiting for connections on 27017"
хрупко, в следующем билде изменять формат сообщения и оппа
02:14:00 ПП
User 123648726
ну так я фиксирую версию монги
02:14:24 ПП
User 123648726
она же тоже в контейнере
06:03:17 ПП
User 80577736
User 199194369
докер создан чтобы умирать)
Мисиксы)))
10:35:08 ПП
User 46399435
User 123648726
интересный подход. а если мне монгу ждать, то мне дергать 27017 что ли?
вроде как links и health checking должны решать эту проблему, но это не точно
11:53:57 ПП
User 86497879
да, но жаль health check может сказать только что все плохо или нет. вот бы хук повесить