@ru_docker

Страница 249 из 610
Виталий
06.01.2017
22:32:35
ну тут пока важная общая идея, как сбилденные контейнеры поместить на прод и перезапустить там все. Общий подход интересует. Делал?

Pavel
06.01.2017
22:35:48
Общий подход таков: сбилденные контейнеры поместить на прод и перезапустить там все.

Ну есть всякие swarm, kubernetes и т.д.

Виталий
06.01.2017
23:03:30
Общий подход таков: сбилденные контейнеры поместить на прод и перезапустить там все.
в том то и вопрос, какими средствами можно поместить контейнеры на прод и перезапустить там все?

Google
Pavel
06.01.2017
23:04:51
в докере это через репозиторий

Построенный контейнер пушишь в докер-репозиторий (registry), а на продах его вытягиваешь

Виталий
06.01.2017
23:05:41
ок

какими средствами можно в автоматическом режиме (командой из ci) вытянуть имеджи на прод и перезапустить там все?

у меня уже есть сбилденные контейнеры. Я хочу сбвинуться дальше :) не знаю куда идти и что читать

Pavel
06.01.2017
23:06:50
Это команды bash либо встроенные доменные языки CI систем

Можно в крайнем случае без регистра даже, просто экспортировать контейнер в файл и копировать его на прод

Виталий
06.01.2017
23:08:05
нет, надо из регистри

Pavel
06.01.2017
23:08:54
https://docs.docker.com/engine/reference/commandline/push/ вот это читал?

Виталий
06.01.2017
23:09:15
я понимаю что это баш и бла бла бла

конечно читал

я же говорю, после отрбаоты CI у меня в регистри появляются нужные образы контейнеров с кодом приложения и полным фаршем

Pavel
06.01.2017
23:10:26
https://docs.docker.com/engine/reference/commandline/pull/ а вот это? :)

Google
Виталий
06.01.2017
23:11:05
осталось только в тот же CI добавить волшебную логику которая волшебно идет на прод и просить докер на проде подтянуть новые образы и пересоздать нужные контейнеры

я сейчас это все руками делаю.

Pavel
06.01.2017
23:11:49
Как перезапустить - слишком абстрактный вопрос. Перезапускай как тебе удобно. В примитивном случае просто стопаешь один контейнер и запускаешь другой.

Виталий
06.01.2017
23:12:10
Павел, ты реализовывал то, что хочу реализовать я?

Pavel
06.01.2017
23:12:22
Нет.

Потому что непонятно чего ты хочешь :)

Я реализовывал только понятные вещи.

Виталий
06.01.2017
23:12:53
да что не понятного? Есть CI сервер который выполняет комады - это понятно?

команды выполняются на машине А Продавшен сервер назодиться на машине Б

вопрос - как с машины А попросить машину Б сделать то, что мне нужно?

при этом соблюдая безопасность и все остальные понятные всем дела

Pavel
06.01.2017
23:13:49
Через ssh например?

Maxim
06.01.2017
23:14:04
в gitlab ci можно же подключиться по ssh, и произвести уже манипуляции с docker демоном

не?

Виталий
06.01.2017
23:14:58
вооот... ssh... я и спрашиваю как это можно сделать:) Так как я хз и вариантов нагуглить не удалось. Везде платные сервисы деплоя докеримеджей

Maxim
06.01.2017
23:15:41
смотри, у тебя есть сиай, который идет по ssh на сервер, после этого делает docker pull $image && docker run $image

Виталий
06.01.2017
23:15:42
Жену посадить за вторую машину
Вот! Единственный пока что вариант человек предожил. Еще есть? Что там с ssh? Как авторизация? где ключик\пароль хранить

Maxim
06.01.2017
23:15:59
https://docs.gitlab.com/ee/ci/ssh_keys/README.html

Виталий
06.01.2017
23:17:02
во, вариант. Пока что единственный более или менее реальный и поддериваемый самим СИ. Ок

Google
Pavel
06.01.2017
23:17:17
Просто ssh это базовейшая вещь, никогда бы не подумал что такой ответ станет для тебя полезным

Виталий
06.01.2017
23:17:29
ssh - это руками

я сейчас так и делаю.

а о том что этот способ поддерживает СИ из коробки и ключики предусмотрены и тд и тп это уже знать надо

Pavel
06.01.2017
23:19:17
Так ты просто прочитай всю документацию по Gitlab по диагонали, чтобы вообще поиметь представление о том что он умеет потенциально

Виталий
06.01.2017
23:20:23
ну тоже вариант, но вот проблемка в том что ее много :) Я прочел базовые вещи которые попадались в интернетах и по ссылкам рекомендованым а до этого не дошел. А чтобы по ней искать надо хотя бы примерно понимать что искать.

так, а что если у меня куча серверов по которым раскиданы имаджи и коннектриться к каждому не варинат? Есть механизмы управления кластерами ... типа из СИ кинул команду кластеру а он сам там на докеры каждому серверу стукнет и все перезапустит?

Pavel
06.01.2017
23:21:28
Короче базово, тебе нужно на билд сервере создать .sh скрипт, в который напихать башевских команд подключения к продакшен серверам и перезапуска там контейнеров.

И этот скрипт запускать по окончании билда контейнера

Можно делать это ансиблом, солтом, и еще 100500 способов

По маске сервера пинговать..

Виталий
06.01.2017
23:23:46
сейчас про swarm читаю

я думаю в докере предусмотрено то, что мне надо только надо это найти

Pavel
06.01.2017
23:24:12
Я слышал что он глючный

Виталий
06.01.2017
23:24:35
я слышал что докер дырявый )

Pavel
06.01.2017
23:24:47
ага

докер не для слабаков

Vladimir
06.01.2017
23:25:25
в докере предусмотрен только докер

Sergey
07.01.2017
01:06:06
ssh - это руками
ssh root@remote.host 'uptime; df -h' твоя ci такую команду может запустить? вместо uptime, как ты понял, можно запускать нужные тебе команды или скормить shell скрипт, который лежит локально. ну и авторизацию настроить по ключам

Google
Sergey
07.01.2017
01:06:22
когда появится кластер - тогда можно и усложнить

Виталий
07.01.2017
09:44:50
когда появится кластер - тогда можно и усложнить
Да, это хорошее решение. Я не понимал как авторизоваться по ssh в ci. Вчера ссылку кинули, там вроде расписано :)

Коллеги, кто знает в чем может быть причина? ----- $ eval $(ssh-agent -s) Agent pid 23 $ ssh-add < (echo "$SSH_PRIVATE_KEY") /bin/sh: eval: line 60: syntax error: unexpected "(" ERROR: Build failed: exit code 2

запускаю в alpine linux через /bin/sh

Evgeny
07.01.2017
18:28:59
BusyBox sh != Bash

Aleksey
07.01.2017
18:29:00
не?

Виталий
07.01.2017
18:29:25
BusyBox sh != Bash
это понятно) как решать-то*

не?
сек

Vlad
07.01.2017
18:30:31
Убери пробел перед скобкой. https://docs.gitlab.com/ce/ci/ssh_keys/README.html

Admin
ERROR: S client not available

Виталий
07.01.2017
18:30:51
я уже как угодно пробовал и с ним и без него

/var/www/html # ssh-add <(echo "key") sh: syntax error: unexpected "("

и я думаю что не в пробеле дело

я сейчас в файл загоню текст, а потом из файла читать буду

Vlad
07.01.2017
18:32:47
echo "$SSH_PRIVATE_KEY" | ssh-add

Виталий
07.01.2017
18:38:29
$ eval $(ssh-agent -s) Agent pid 23 $ mkdir -p ~/.ssh $ echo "${SSH_PRIVATE_KEY}" | ssh-add ERROR: Build failed: exit code 1

:)

такой вариант решил проблему - mkdir -p ~/.ssh - echo "${SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa - chmod 0600 ~/.ssh/id_rsa - ssh-add -k ~/.ssh/id_rsa

Vlad
07.01.2017
18:44:42
А зачем ssh-add если уже записал в id_rsa?

Google
Виталий
07.01.2017
18:45:19
фак, точно

Vlad
07.01.2017
18:46:51
Виталий
07.01.2017
18:47:16
Привычка

я вот только не понял, почему гитлаб рекомендовал в доке читать из переменной и добавлять через ssh-add, если можно создать файл. Может что-то связанное с безопасностью?

С файлом не нужно ставить ssh-agent и запускать его и прочее.

Виталий
07.01.2017
18:50:13
ну вот не получилось у меня читать с переменной

тонкостей sh не познал еще:(

гугление не помогло

Vladimir
07.01.2017
18:59:48
Молодой человек, простите конечно, но вам по-моему в другое окошко.

Алексей
08.01.2017
08:40:54
вот читаю я https://blog.docker.com/2017/01/docker-storage-infinit-faq/ и вижу там такой вот слайд

и понимаю докер опять сломает всю логику.

сейчас по контейнеру на каждый процесс. а потом внутри процесса будь добр разбей всё по механике хранения

Evgeny
08.01.2017
11:37:00
Может в контейнере это будет склеиваются?

Алексей
08.01.2017
12:12:24
А опиши подробнее
фил ну картинка же

Может в контейнере это будет склеиваются?
то что оно будет склеиваться не означает что это будет проще эксплуатировать...

Phil
08.01.2017
12:13:42
фил ну картинка же
я не понимаю как она относится к докеру. хорошая картинка

Алексей
08.01.2017
12:14:01
ну infinit же

новый софтваре сторадж купленный докером

Страница 249 из 610