
Igor
29.06.2017
16:33:39
Очень счастлив в общем

Vadim
29.06.2017
16:33:57
Там основной паттерн - это разделение на Build и Runtime контейнеры. Из-за кэша докера, достаточно проблематично к примеру сбилдить js и запустить его в контейнере. npm install тянет очень много веса за собой, поэтому билд и рантдайм контейнеры разделяют. В Jenkins такой подход реализуется через Build и Publish стейджы, которые крутятся в Docker агентах.

Aleksandr
29.06.2017
16:34:18
Так и без него этот паттерн хорошо рисовался
ну вот нет, при обычном наследовании, размер образа только увеличивается и не уменьшается.
пример: я хочу взять го бинарник микросервиса, мне надо поставить голанг? а потом что? удалить его? ну так чтобы он не прилип то все нужно делать в одно слое: поставить собрать и там же снести, это проблема когда такого много очень

Vadim
29.06.2017
16:35:03
Разделение про Build и Publish вообще не про наследование, при наследовании всё верно - образ только растет. Тем более что Build окружение всегда избыточно для рантайма.

Google

Aleksandr
29.06.2017
16:35:07
малти-стейдж очень помогает не таскать липкие хвосты и писать краткие и внятные докерфайлы

Igor
29.06.2017
16:35:31

Aleksandr
29.06.2017
16:36:02

Igor
29.06.2017
16:36:46
Сбилдил через volume пробросил на хост сбилдженную версию а дальше гогого
Можно ещё круче, и сбилдженную версию прямо в github releeses выливать
А дальше оттуда добавлять
В runtime контейнеры
Понятно объяснил?

Vadim
29.06.2017
16:38:20

Igor
29.06.2017
16:38:30
Да

Aleksandr
29.06.2017
16:38:32

Vadim
29.06.2017
16:38:47
билд и рантайм образы создаются в любом случае в одном хосте

Aleksandr
29.06.2017
16:39:03

Google

Igor
29.06.2017
16:39:25

Vadim
29.06.2017
16:39:32
Как иначе перекидывать артефакты?

Aleksandr
29.06.2017
16:39:40

Vadim
29.06.2017
16:39:51
Даже в примере на сайте артефакты перекидываются через хост систему
https://docs.docker.com/engine/userguide/eng-image/multistage-build/#before-multi-stage-builds

Igor
29.06.2017
16:40:29
Ну если есть надобность не привязываться к хосту, то хранилище я думаю найти можно

Aleksandr
29.06.2017
16:41:09

Vadim
29.06.2017
16:41:58
Пуша на registry не происходит

Igor
29.06.2017
16:43:11
а регистр для чего?
А при чем тут регистр к пробрасыванию сбилдженой версии приложения из одного образа в другой

Aleksandr
29.06.2017
16:43:34
образ должен быть маленьким очень, и версия должна иметь 2-3 слоя, чтобы они пушились и пулились моментально

Igor
29.06.2017
16:44:40
Тогда заливать сбилдженой версию куда ни будь во внешнее хранилище (на одном из хостов например), и тянуть оттуда

Aleksandr
29.06.2017
16:44:54
тут и на начнешь искать как экономить 50 мб

Vadim
29.06.2017
16:45:19
Я не понимаю тему разговора, даже при перехвате артефакта из первого стейджа как в доках он все равно берет его из кэша хост системы. Билд multistage докерфайла проходит на одном хосте, он не распределенный

Igor
29.06.2017
16:45:38
Ну в любом случае multistage есть, так что это пустая болтовня

Aleksandr
29.06.2017
16:45:40

Google

Igor
29.06.2017
16:47:12
Я ж говорю не важно, есть multistage, и с ним проще

Aleksandr
29.06.2017
16:48:16

Vadim
29.06.2017
16:58:57

Aleksandr
29.06.2017
17:01:14
есть конечно крутые вещи вроде артифактори, но там большая часть фич платная и много ненужного при этом поднимается, хочется по возможности обходиться коробочными возможностями особенно когда они сделаны хорошо

Igor
29.06.2017
17:26:09
В репе и храни

Aleksandr
29.06.2017
17:26:42

Igor
29.06.2017
17:26:57
Ну да
Если надо, пулл её

Igor
29.06.2017
17:27:30
На хост пробросил, сбилдил runtime образы и вперёд

Aleksandr
29.06.2017
17:28:14
ну я так и делаю, тут никаких противоречий и нет)
в общем для этого он и создан

Igor
29.06.2017
17:28:55
Ну а я тоже самое без multistage предлагал

Konstantin
29.06.2017
19:33:15
https://github.com/docker/docker-ce/releases

Роман
29.06.2017
19:40:15

Konstantin
29.06.2017
19:40:31
это другой проект

Google

Konstantin
29.06.2017
19:40:37
docker/docker-ce
я сам по moby/moby ориентировался

Admin
ERROR: S client not available

Konstantin
29.06.2017
23:28:45
Только для парней и девушек?

Super
29.06.2017
23:29:22
Нет

Igor
29.06.2017
23:29:36
Дискриминация
На каждом шагу

Konstantin
29.06.2017
23:31:46

Роман
30.06.2017
09:14:52
Как удалить контейнеры в таком состоянии:
driver "aufs" failed to remove root filesystem for 4f1603386bf4bd5106899dab9b2c054e8cbcd7f2857ccd42bece934b552e2633: no such file or directory
?

Konstantin
30.06.2017
10:17:24

Роман
30.06.2017
10:18:04

Konstantin
30.06.2017
10:19:11
Я могу ошибаться, но вроде маунты остаются висеть, глянь mount если он там есть
Руками unmount
А вообще на overlay переходить давно пора
Если соберешься менять storage - лучше снести папку докера полностью, файлы старого драйвера будут мусором валяться
Да и вообще, в любой непонятной ситуации rm -rf /var/lib/docker )))
Бэкап /var/lib/docker/swarm если испооьзуется

Alexey
30.06.2017
10:30:40
Всем привет. Если уж речь зашла про маунты, может кто мне сможет помочь с решением моей проблемы? А пролема состоит в том, что при маунте локальной папки группа и овнер равны 1000:1000 и возникают проблемы с правами внутри контейнера. Соответственно при смене прав в контейнере ломаются права снаружи. Есть какой-то способ мапить пользователей хоста и пользователя контейнера?

Quiss
30.06.2017
10:31:14

Google

Quiss
30.06.2017
10:31:18
тоже не разобрался
может кто подскажет

Alexey
30.06.2017
10:31:41
Например чтоб на хосте пользователь был user:user а в контейнере www-data:www-data

Konstantin
30.06.2017
10:34:03
uid в контейнере поменяйте

Роман
30.06.2017
10:35:10

Konstantin
30.06.2017
10:35:58
ну я озвучил что помню связанное)) aufs не юзаю
Docker: Just Stop Using AUFS (ещё в 2015 об этом кричали)) )
Можно ещё watchcat завести ?

Igor
30.06.2017
10:47:14
CatWatcher

Alexey
30.06.2017
13:34:18
может кто подскажет
Нашел решение. RUN usermod -u 1000 www-data && groupmod -g 1000 www-data. 1000 -это uid и guid хоста, www-data - пользователь в контейнере