Използвам Docker за почти всичко, а не съм дори програмист.
Мислиш ли, че Docker е само за разработчици? Чувал съм този израз, но не може да бъде по-далеч от истината. Аз не съм разработчик и използвам Docker, за да стартирам десетки услуги и приложения в моя хомелаб.
Какво е Docker всъщност?
Docker е платформа за контейнеризация, която ви позволява да стартирате услуги, програми и мини операционни системи на вашия компютър или сървър. Тя може да се използва и за стартиране на различни среди за разработка, инструменти и други неща, необходими за изграждане на приложения.
Една от основните причини да използвате Docker е да стартирате различни услуги, разделени както помежду си, така и от вашата хост операционна система. Това ви позволява да имате по-голяма конфиденциалност и защита за вашата система. Ако един контейнер бъде компрометиран, той има достъп само до себе си и до всичко друго, което му разрешите.
Така че, аз ли съм разработчик?
Не бих нарекъл себе си "разработчик." Докато преди правех малко програмиране и разработка на приложения, не съм го правил от много години. Знам как да се справя с терминал на Linux и все още се занимавам с HTML или CSS, когато става въпрос за моите лични уебсайтове, но по никакъв начин не съм напълно развит разработчик.
В най-добрия случай съм майстор. Обичам да се занимавам с неща, да променям кода на приложения, за да ги накарам да правят това, което искам, и да се ровя из различните услуги, които управлявам в домашната си лаборатория.
Тъй като не извършвам задачи свързани с разработка, всъщност не използвам никакви услуги за разработка в Docker. Има някои страхотни инструменти за разработчици, налични в Docker, но лично аз нямам нужда от тях.
Ако не съм разработчик, защо да използвам Docker?
Докато Docker върши фантастична работа, помагайки с разработки, това просто не е мой случай за него. Вместо това, аз използвам контейнеризацията на Docker за нещо съвсем различно: домашно лабораторно оборудване.
Налични са десетки хиляди Docker контейнери. Много от наличните контейнери се фокусират върху стартирането на услуги или програми, а не непременно върху разработката.
В моята домашна лаборатория имам почти 30 Docker контейнери разположени на основния ми Docker хост, и още половин дузина на вторичния ми Docker хост. Тези услуги варират от Pi-hole до Plex, OpenSpeedTest, Calibre, paperless-ngx, Home Assistant, Tautulli, Homepage и много други.
Въпросът е: защо използвам Docker за това, вместо просто да инсталирам самите приложения? Отговорът е прост: обичам контейнерите.
С Docker, моят Plex контейнер не може да получи достъп до нищо в мрежата ми, освен ако не му дам достъп. Така че, давам на Plex достъп до моята медийна библиотека и това е всичко. Home Assistant всъщност няма никакъв достъп до сървъра ми; има собствен IP адрес и работи в моята мрежа, но ако бъде компрометиран, не може да се свърже с другия хардуер в мрежата ми.
Същото важи и за всички други приложения, които използвам с Docker. Те са разделени едно от друго. Контейнерите на Docker имат достъп само до това, което им позволя, което означава, че имам прецизен контрол върху рисковете за сигурността в домашната лаборатория.
Отгоре на всичко, Docker контейнерите идват предварително конфигурирани за приложението, което искате да стартирате, така че настройката е минимална, за да пуснете услугата. Всички зависимости вече са налични и те се поддържат актуални от разработчика на контейнера. Ако дадена зависимост изисква рестартиране, всичко, което трябва да направя, е да рестартирам Docker контейнера, а не моята хост система.
Docker е също така преносим, тъй като мога лесно да променя хост системата, без да преинсталирам или преконфигурирам услугите. Неотдавна преместих Docker сървъра си от един компютър на друг и единственият контейнер, който всъщност не донесе конфигурацията си, беше Home Assistant (който лесно възстанових от резервно копие).
Когато за първи път започнах да използвам Docker, не осъзнавах колко полезна ще бъде тази функция. Въпреки това, съм я използвал толкова много пъти. Докато функцията за миграция е хубава, любимата ми част от Docker е, че мога да инсталирам отново контейнер без да губя каквито и да било настройки или конфигурации.
Така че, защо използвам Docker? Просто е най-лесният начин за мен да инсталирам, тествам и използвам услуги в моето домашно лабораторно пространство. Разполагането на Docker контейнер отнема само няколко секунди. Когато приключа, просто махам контейнера и услугата (с всички зависимости) изчезва.
Docker управлява целия ми домашен лабораторен проект и не мога да си го представя по различен начин.
В този момент от моето пътешествие в домашната лаборатория, не мога да си представя да не използвам Docker. Не мога дори да започна да броя броя на услугите, които съм опитал в Docker, само за да ги премахна няколко минути по-късно, защото не правеха това, което исках.
Без Docker, щях да трябва да инсталирам софтуера плюс всичките му зависимости. Деинсталирането след това щеше да изисква и премахването на тези зависимости, а почти винаги остават ненужни конфигурационни файлове.
Docker просто прави управлението на моето домашно лабораторно пространство просто, и определено е най-добрият инструмент за работата.
В бъдеще планирам да внедря Docker в среда с висока наличност. Всъщност ще имам три сървъра с подобни спецификации, които всички ще работят с Docker. Portainer, моят предпочитан мениджър за Docker, след това ще разпределя тези услуги между различните сървъри.
Ако трябваше да работя на един сървър, всичките тези услуги щяха да преминат на друг сървър и да продължат да работят. Когато сървърът, който премина през поддръжка, се възстанови, той ще бъде отново достъпен за контейнерите да се деплоитират на него.
Без използване на някаква форма на система за управление на приложения, като Docker, това нямаше да бъде възможно. Поради начина, по който Docker управлява своите обеми и хранилище, когато тези услуги мигрират, мигрират и всичките им предпочитания, конфигурационни файлове и всяко локално хранилище, използвано от приложението.
Docker е абсолютно необходим за моята настройка и не виждам как би могъл да изчезне в близко бъдеще.
Така че, не, не съм програмист, но абсолютно обожавам Docker. Ако не си програмист, определено трябва да опиташ Docker - това ще промени настройките ти към по-добро.
Има много Docker контейнери, които можете да опитате. Всъщност десетки хиляди. Ако това ви е объркващо, не сте сами. Ето няколко от любимите ми Docker контейнери, които мисля, че трябва да бъдат в всяка домашна лаборатория, вариращи от прости уеб страници до напълно разработени услуги.


