Автор Тема: docker containers  (Прочетена 1209 пъти)

tritonchev

  • Участник
  • *****
  • Публикации: 24
    • Профил
docker containers
« -: Авг 09, 2019, 21:10 »
Здравейте,

Нов съм в начинанието с докер. Имам въпрос :

Като съм в вдигнал Nginx+Letsencrypt с docker-compose, как може всеки нов контейнер който инсталирам да е обвързан с SSL на домейна. Предпоlагам с reverse proxy , но как да го направя. Някой да има guide Или да ме насочи къде да потърся.  Искам да стане така да достъпвам отделен контейнер ----  https://container_name.example.com   

Благодаря предварително
Активен

ray

  • Участник
  • *****
  • Публикации: 1093
    • Профил
Re: docker containers
« Отговор #1 -: Авг 10, 2019, 20:06 »
Здравей,

Не е много ясно къде ще се деплойват тези контейнери ?
AWS, Google, Azure или някъде другаде.
Има значение тъй като може да има Loadbalancer и на него да е сертификата.

Отделно на един хост може да се пуснат много контейнери и ако има идентични решението ще бъде друго и т.н.
Всъщност ако са идентични трябва да слушат на различни портове.

Във AWS лоудбалансърите са класически и приложен, пак има разлика при настройването им.
« Последна редакция: Авг 10, 2019, 20:09 от ray »
Активен

nslave

  • Участник
  • *****
  • Публикации: 95
  • Distribution: Fedora / Debian
  • Window Manager: Xfce
    • Профил
Re: docker containers
« Отговор #2 -: Авг 11, 2019, 11:57 »
И аз не съм много в час с тези неща, но последно като съм гледал мисля, че се правеше с wildcard сертификат на host-a и след това монтиране на файловете със сертификатите в контейнера. Това ако не се мъчиш да балансираш каквото и да било де, ами са си отделни неща. Другият вариант, който се сещам е без wildcard, ами всеки контейнер да си има монтирана главната папка на letsencrypt от хоста и да си се грижи сам за обновяването.

Иначе за reverse proxy, често срещам да споменават Traefik, но как точно се използва нямам идея.
« Последна редакция: Авг 11, 2019, 12:02 от nslave »
Активен

ray

  • Участник
  • *****
  • Публикации: 1093
    • Профил
Re: docker containers
« Отговор #3 -: Авг 11, 2019, 15:15 »
В първия отговор дадох някаква общо взето по-обща информация, мързеше ме пък и не бях проверил това онова. Не съм и разработчик  ;)

Имах предвид 2-3 неща, първо че ако се използва Loadbalancer е лесно да се сложи един wildcard сертификат на него и толкова.
Връзката между него и отделните машини/контейнери може да бъде със или без криптиране.
Това за сертификата важи и за reverse-proxy-то  :)

Второ ако се ползва application-loadbalancer може да се насочва трафика към определена машина на база на поддомейна за който е заявката.

Трето, може да се използва и session-persistance и заявките да отиват към една и съща машина. Това ако се използва класически лоудбалансър.

Другия вариант е да се вдигне едно reverse-proxy (нямам идея кое е най-добро) и от него според заявките те да се насочват към дадената машина/контейнер - поддомейн.
Нямам опит с подобна конфигурация, вероятно може да стане с четене и ровене  :o

Ето някакъв линк който излезе първи:
https://www.nginx.com/resources/glossary/reverse-proxy-vs-load-balancer/
Активен

tritonchev

  • Участник
  • *****
  • Публикации: 24
    • Профил
Re: docker containers
« Отговор #4 -: Авг 12, 2019, 14:00 »
На домашният ubuntu сървър искам да го кача, гледам ползват това jwilder/nginx-proxy, но ще си поиграя за да го подкарам.
Активен

growchie

  • Участник
  • *****
  • Публикации: 621
    • Профил
Re: docker containers
« Отговор #5 -: Авг 14, 2019, 15:42 »
Не слагай сертификати в контейнера, безпредметно е. По-добре настрой едно фронт енд прокси което да ти поема нещата по https, и просто апа ти вътрешно да продължава по стандартен http. Щом трафика ти няма да напуска локалната машина не е бела.
letsencrypt няма как да пуснеш автоматично в контейнер, понеже това противоречи на философията на докер - един контейнер един процес. На теб ще ти трябва крон + някакъв сървис и ще трябва да си пишеш свой инит скрипт който да пали и двете. В докер контейнера нямаш init/systemd.

Докер компоузър не съм ползвал, пиша си докер файловете на ръка. За това което ми говориш по-скоро става въпрос за kubernetes или docker swarm решение. Чист докер който вдига един контейнер без лоуд балънсър ми се струва излишно да правиш проксита.
Не си обяснил какво точно искаш да правиш за да ти дам по-точна информация.
« Последна редакция: Авг 14, 2019, 15:49 от growchie »
Активен

tritonchev

  • Участник
  • *****
  • Публикации: 24
    • Профил
Re: docker containers
« Отговор #6 -: Авг 14, 2019, 16:47 »
Пример:

Инсталиран portainer, guacamole, plex и т.н (с докер). Достъпът от вън да бъде https://plex.example.com. guacamole.example.com, plex.example.com. като имам активен домейн.
Активен

growchie

  • Участник
  • *****
  • Публикации: 621
    • Профил
Re: docker containers
« Отговор #7 -: Авг 15, 2019, 08:36 »
Така както го мислиш и ми го обясняваш няма как да стане. Базовото айпи на всички поддомейни ще е едно и също, само портовете на които ще са достъпни услугите ще са различни (предполагам, че имаш само 1 публичен адрес). Летсенкрипт не ти позволява да имаш * сертификати, така че правилното нещо е да направиш сертификат за example.com и да правиш редикеркт с мод прокси към example.com/prex, example.com/portainer и т.н. Специално за портейнъра има инфо как да вкараш сертификат в контейнера https://portainer.readthedocs.io/en/stable/deployment.html#secure-portainer-using-ssl
Активен

10101

  • Участник
  • *****
  • Публикации: 323
  • Distribution: GNU LINUX
    • Профил
Re: docker containers
« Отговор #8 -: Авг 15, 2019, 09:14 »
Здравейте,

С това не съм съгласен:

"Летсенкрипт не ти позволява да имаш * сертификати,"

На една машина с 1 ип може да имаш повече от 1 сертификат от летс.
Активен

А печат ?

growchie

  • Участник
  • *****
  • Публикации: 621
    • Профил
Re: docker containers
« Отговор #9 -: Авг 15, 2019, 09:44 »
Ти може да имаш и 1000 ама уеб сървърът ти ще ползва само 1 реално. Това за * от летсенкрипт съм го пропуснал гледам че го има от година някъде.
« Последна редакция: Авг 15, 2019, 09:46 от growchie »
Активен