Anonymous
нужен ли multi-staged build для докерфайла, если у меня ci компилирует проект и потом докер билдит образ из папки build?
Anonymous
или лучше пусть в докере еще раз билдится ? в несколько этапов
Sergey
правда тогда если контейнер помрет - умрет коннект тогда получается что надо строить HA а если так то получается будет какой то отказоустойчивый NFS прокси😂
Sergey
с хоста до nfs
Sergey
PVC-по сути указатель на PV который является томом для NFS PV, PVC - сущности k8s, хост их не поймет
Sergey
не понял щас, но с pv тоже не работает
дайте линк на ту фразу которую не поняли а то сам запутался
Vladimir
хост на boot2docker
Sergey
если у вас контейнер может общаться с NFS но не может с хостом, значит надо либо привязать контейнер в две стороны как с двумя NFS, либо сам хост с NFS(или с шарой)
Sergey
и если прокинуть оба PV в одну папку, они там будут синькаться, получится что контейнер будет пркоси к NFS от хоста😁
Sergey
тома k8s работают через storageclass, я по крайней мере не пробовал шарить хост с контейнером, ибо ноды обычно используются как ресурсы для подов, или вы имеете в виду вообще левый хост не в кластере?
Sergey
вот это не понял
если моя подсказка не помогла попробуйте тут спросить @kubernetes_ru
Vladimir
что то мне подсказывает что лучше вообще как то по другому сделать) очень костыльно все выглядит
Sergey
идея сама по себе глупая
Sergey
либо вы напрямую к NFS стучитесь с хоста
Sergey
либо в шару где NFS пошарена
Sergey
а через контейнер да, будет костыльный прокси NFS
Sergey
либо упороться шарить сам том изнутри контейнера с хостом😂😂😂 типа smb://ip.addr - будет приходить в папку контейнера через externalIP, а оттуда будет видеть директории внутри NFS
Sergey
ну это совсем наркомания😂😂😂
Dmitriy
Ребят, а как сделать graceful reload контейнера с nginx?
Anonymous
нужен ли multi-staged build для докерфайла, если у меня ci компилирует проект и потом докер билдит образ из папки build?
Anonymous
или лучше пусть в докере еще раз билдится ? в несколько этапов
Gaiaz
нужен ли multi-staged build для докерфайла, если у меня ci компилирует проект и потом докер билдит образ из папки build?
Компиляцию есть смысл выносить в отдельный стейдж тк например в общем образе сами библиотеки для компиляции не нужны
Den
Всем привет) Подскажите, пожалуйста, как грамотнее реализовать готовыми средствами следующее: имеется контейнер с nginx (для прокси), и множество контейнеров на которые проксируются запросы, все контейнеры разные (различное ПО). Все контейнеры могут быть слинкованы с другими контейнерами (базы данных). Все запускается через docker-compose.yml.
Den
Мне нужно автоматически, у меня сложная конфигурация nginx, видел эту ссылку немного не то, статика вся на nginx
Den
По факту мне нужно автоматизировать как то связывание, что бы одной командной всё стартовало, контейнеры добавляются руками не динамически
Je
По факту мне нужно автоматизировать как то связывание, что бы одной командной всё стартовало, контейнеры добавляются руками не динамически
Так а в чем вопрос-то, никакого связывания не нужно, в одной сетке же запускаются, доступны по имени контейнера (docker dns resolver). Просто пиши в конфиге nginx апстримы для проксирования и все
Den
Много docker-compose проектов
Den
Сейчас реализовал через external_links и явное указание имени контейнеров в сервисе
bebebe
вы можете настроить бриджи через brctl или openvswitch между докер сетями
bebebe
http://docs.openvswitch.org/en/latest/howto/docker/
Den
И все контейнеры могут быть на 80 порту...
bebebe
И все контейнеры могут быть на 80 порту...
в этом ничего страшного нет
Den
вы можете настроить бриджи через brctl или openvswitch между докер сетями
А в docker-compose в таком случаи указывать созданную сеть?
Сергей
подскажите как можно удалять старые образы? у меня автоматом он обновляется и тарый остается лежать)
Den
Да
Это тоже подойдет верно? https://developer.ibm.com/recipes/tutorials/bridge-the-docker-containers-to-external-network/
bebebe
Это тоже подойдет верно? https://developer.ibm.com/recipes/tutorials/bridge-the-docker-containers-to-external-network/
Да, вполне, я его выше вам первыми вариантом предлагал
Sun
господа, вопрос на засыпку. Дано: докер бежит под рутом. Есть контейнер с подключенным волумом. По умолчанию на папку разрешения 777, на создаваемые из докера файлы — внутренний id из контейнера. Если кто-то снаружи меняет разрешения на файл, допустим, на nobody:crontab, то конт теряет доступ к файлу или нет?
Den
Еще такой вопрос, подскажите, пожалуйста: как запустить сервер на 80 порту (т.е. Под root), но файлы создаваемые веб приложением внутри контейнера имели права обычного пользователя? Запускаю docker через sudo.
Alexandra
Насчет рута не уверена, но вот пользователь созданный внутри контейнера - точно потеряет
bebebe
господа, вопрос на засыпку. Дано: докер бежит под рутом. Есть контейнер с подключенным волумом. По умолчанию на папку разрешения 777, на создаваемые из докера файлы — внутренний id из контейнера. Если кто-то снаружи меняет разрешения на файл, допустим, на nobody:crontab, то конт теряет доступ к файлу или нет?
это щикотливый вопрос, нужно указывать версию докера, это важно https://stackoverflow.com/questions/23544282/what-is-the-best-way-to-manage-permissions-for-docker-shared-volumes я сталкивался с такой проблемой, у меня была какая-то тактика и я её придерживался (не помню как победил)
bebebe
и докер должен быть свеженький
Sun
Пока что пришлось в анзибл прописать проверку и перенакатывание 666 на файл. Но я придумаю как это победить
Vladimir
можно попробовать скостылить с inotify например.. повесить фикс прав на событие в фс
Sun
Инстанс не статичный. Мне надо будет это в анзибл забить
Anonymous
Компиляцию есть смысл выносить в отдельный стейдж тк например в общем образе сами библиотеки для компиляции не нужны
да, это верно. Ранее так и было сделано, в 3 этапа. Сейчас к приложению прикрутил ci и теперь билд/релиз и прочие штуки делаются автоматом через ci. Чтобы ускорить процесс сборки Я убрал стейджи из докера И при docker build образ собирается уже из готовой сборки, которую сделал ci т.е. по сути докерфайл: FROM nginx-alpine WORKDIR /app COPY ./build/ ./ Вопрос в том стоит ли оно того? Или лучше оставить мультистейдж-билд? Тогда получается, что приложение будет собираться лишний раз.
NO
Народ, а как можно в docker-compose отправить image в private registry?
Bohdan
как и без docker-compose
Bohdan
docker login docker-compose push
Fess
Всем привет! Подскажите пожалуйста - есть хост-машина, с 2-мя сетевыми интерфейсами, с IP вида 192.168.1.1 и 192.168.1.2. Хочу на ней запустить 2 докер-контейнера с tftp-сервером, таким образом, чтобы каждый контейнер привязывался с одному из сетевых интерфейсов хостовой машины, и был доступен извне по адресам 192.168.1.1:69 , 192.168.1.2:69 . Подскажите, реально ли такое сделать?
h1dw0w
при запуске в -p замапь
Fess
при запуске в -p замапь
это порты, само собой, но как каждый контейнер завязать на нужный IP?
h1dw0w
-p 192.168.1.1:69:69
h1dw0w
пробовал так?
Fess
-p 192.168.1.1:69:69
хм, щас попробую
Fess
-p 192.168.1.1:69:69
работает, спасибо! Все оказалось проще:) А то я думал огород с сетями городить
Boris
Подкажите, nginx контейнер энтрипоинта service nginx start сразу же завершается с exit code 0 - что может быть причиной?
Алексей
активного процесса нет, значит контейнеру пора умереть
Sun
потому что в контейнере не сервисы запускаются
bebebe
Подкажите, nginx контейнер энтрипоинта service nginx start сразу же завершается с exit code 0 - что может быть причиной?
плохой, негодный entrypoint обычная практика запускать nginx как foreground процесс, в случае service nginx - запускает сервис и выходит
Sun
посмотри в оригинальный докерфайл nginx/nginx и всё станет понятно
Алексей
походу все готовились к такому вопросу ))
Sun
все наступали на эту граблю. Поэтому никто никого не унижает. :)
Dmytro 🇺🇦
Это правильно поведение)
Boris
Спасибо
Boris
Понимаю, что все логично, просто не понятно досихпор, почему service nginx start при сборке внутри dockerfile - заставит его работать правильно, а в энтрипоинте -в ыйдет)
Boris
Ну, попробую сбилдить с ENTRYPOINT ["nginx", "-g", "daemon off;"]
Sun
Понимаю, что все логично, просто не понятно досихпор, почему service nginx start при сборке внутри dockerfile - заставит его работать правильно, а в энтрипоинте -в ыйдет)
Потому что суть докера в работе активного процесса в контейнере. Когда активного процесса нет, контейнер убивается. В этом вся суть. Не должно быть в контейнере сервисов от слова совсем. Не путай контейнеризацию с виртуализацией. Это вообще другая вселенная.
Sun
Поэтому, бойся всяких контейнеров типа "Весь LAMP в одном контейнере"
Boris
Сбилдился, и это решило ошибку, спасибо еще раз!)
Sun
Их собирали какие-то поцы, которые на шесту вертели всю идеологию контейнеризации
Sun
У контейнеризации есть два главных свойства: - Повторяемость - Масштабирование Первое означает, что на каком бы пылесосе ты не запускал контейнер, он будет работать точно так же, как на любом другом. Второе означает, что если ты по нужде запустишь десять тысяч одинаковых контов, они все будут работать одинаково.
Sun
От этого и пляши. Не надо делать из докера идола — далеко не везде он нужен и использовать его бездумно тоже некомильфо. Но там где нужен — он бесценен.
bebebe
https://12factor.net/