Możliwość zastosowania platformy Docker


W tej chwili mam kilka serwerów, na których system operacyjny i oprogramowanie działają wyłącznie na komputerze. Główne komponenty to nginx, php-fpm, ffmpeg i kilka innych narzędzi do kodowania wideo. Co godzinę serwer przechwytuje zadania konwersji wideo za pośrednictwem crona, wykonuje je i umieszcza gotowe wideo w tym folderze. Następnie Nginx przesyła strumieniowo te filmy.
Problem polega na tym, że jestem bardzo zmęczony synchronizowaniem plików konfiguracyjnych, aktualizowaniem oprogramowania, niszczeniem oprogramowania, które zostało skompilowane ze źródła itp.
Myślę więc, że przede wszystkim muszę podzielić pliki wideo i całe oprogramowanie, które mam. Pliki wideo będą nadal przechowywane na samym serwerze. Mógłbym użyć OpenVZ jako kontenera oprogramowania. Więc jeśli muszę zaktualizować swoje oprogramowanie, po prostu aktualizuję mój szablon OpenVZ i kopiuję ten vzctl zniszcz + vzctl create image na każdy serwer. Ale nie widzę żadnego dobrego sposobu na zamontowanie katalogu z plikami wideo do kontenera OpenVZ. Rozrzedzam NFS, iSCSI jest zły w moim przypadku, ponieważ muszą być lepsze sposoby.
Dlatego pomyślałem, że Docker to dobre rozwiązanie. O ile wiem, pozwala na podłączenie do niego zasobów zewnętrznych za pomocą tylko wywołania CLI. Po prostu tworzę kontener docker z narzędziami wideo nginx + fpm +, rozpowszechniam go na moich serwerach i dołączam lokalną pamięć masową do plików.
Napisz swoją opinię. Czy to dobry sposób korzystania z platformy Docker, czy też moje rozwiązanie jest inne?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Trudno odpowiedzieć na to pytanie bez dodatkowych informacji. Ale oto kilka pomysłów na świat Dockera.
Najpierw spróbuję myśleć o obrazach i kontenerach Dockera jako o większej liczbie aplikacji niż maszynach wirtualnych. Oddzielnie zarządzaj infrastrukturą hosta z poziomu kontenerów Docker. Może być idealny do uruchamiania Puppet lub Chef na hostach w celu zarządzania kontenerami i zależnościami Dockera. Gdy już wejdziesz do w pełni kontenerowego świata, możesz naprawdę uprościć swoje hosty, uruchamiając platformę taką jak CoreOS. Ale prawdopodobnie nie zacząłbym od CoreOS, jeśli dopiero zaczynasz od Dockera.
Oddziel swoje aplikacje i pliki wideo (o których już wspomniałeś). Twórz kontenery tylko do danych, które przechowują pliki wideo na hostach. Lubię używać
         tianon/true
Obraz platformy Docker do tego. Uruchom obraz z woluminem, który można zapisać:
docker run -d --name videodata -v/videodata tianon/true

Wygląda na to, że będziesz mieć teraz co najmniej jeszcze jeden obraz dla kontenera nginx, PHP-FPM i ffmpeg. Chociaż najprawdopodobniej spróbuję rozdzielić te komponenty na osobne obrazy. Możesz mieć kontener PHP-FPM, który uruchamia twój kod i zapewnia port lub gniazdo dla nginx do użycia do odwrotnego proxy. Ten pojemnik również będzie używał
         --volumes-from
zainstaluj trwałe
/videodata
teczka.
docker run -d --name application --volumes-from videodata myorg/myappimage

Następnie możesz mieć obraz nginx, który korzysta z łączy Docker DNS w celu uzyskania dostępu do PHP-FPM:
docker run -d --name web -p 80:80 --link application:phpfpm myorg/mynginximage

W konfiguracji nginx możesz bezpośrednio określić nazwę DNS
         phpfpm
aby rozpoznać adres IP kontenera aplikacji.
Następnym dodatkiem do tego jest wykrywanie usług. Możesz zastąpić obraz nginx urządzeniem takim jak

https://github.com/jwilder/nginx-proxy
https://github.com/jwilder/nginx-proxy
aby automatycznie dodawać i usuwać kontenery aplikacji w miarę ich pojawiania się i wychodzenia.
Gdy zaczniesz zagłębiać się w świat Dockera z wieloma hostami, narzędzia i koncepcje, takie jak katalogi usług (

https://github.com/progrium/docker-consul
https://github.com/progrium/docker-consul), ambasadorzy (

https://github.com/progrium/ambassadord
https://github.com/progrium/ambassadord), dynamiczna rejestracja usługi w katalogach (

https://github.com/progrium/registrator
https://github.com/progrium/registrator) i równoważenie obciążenia (

https://github.com/hashicorp/consul-haproxy
https://github.com/hashicorp/consul-haproxy) będzie bardziej interesująca.
Odpowiadając na pytanie, myślę, że masz ważne przypadki użycia Dockera. Ale nie sądzę, aby mieszanie OpenVZ i Dockera było naprawdę dobrym pomysłem. Prawdopodobnie chcesz jednego lub drugiego.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Myślę, że potrzebujesz narzędzi do zarządzania konfiguracją, takich jak Puppet, Chef, Ansible lub CFEngine.
Za pomocą tych narzędzi można tworzyć szablony konfiguracji, które można następnie zastosować na wielu serwerach.
Zasadniczo po utworzeniu systemu konfiguracji w systemie zarządzania konfiguracją uruchamiasz jedną komendę na wszystkich serwerach, która następnie stosuje konfigurację.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się