6 най-добри практики за използване на контейнери

Нека да поговорим за някои от най-добрите практики, които трябва да следвате, докато използвате контейнери.


Контейнеризацията се използва широко в няколко организации за разполагане на приложения вътре в контейнер. Тези контейнери са популярни, защото са много леки. За да се възползвате максимално от контейнери, трябва да следвате някои най-добри практики, докато работите с тях.

Използвайте стабилно основно изображение

Благодарение на Докер създаването на изображения на контейнери никога не е било по-просто.

Укажете основното си изображение, добавете промените и изградете контейнера си. Въпреки че това е чудесно за начало, използването на базови изображения по подразбиране може да доведе до големи изображения, пълни с уязвимости в сигурността. Също така, избягвайте използването на изображението за докер “tag”, тъй като има голям шанс за грешка в него.

Debian или Ubuntu се използват като основно изображение в повечето изображения на Docker. Те са много полезни по отношение на съвместимост и лесен борд, но тези базови изображения могат да добавят стотици мегабайти допълнителни режийни разходи във вашия контейнер.

Например, обикновените приложения Node.js и Go, „здравей свят“ са около 700 мегабайта. Приложението ви вероятно е с размер само няколко мегабайта. Така че всичкото това допълнително излишно разхищение е място и чудесно скривалище за уязвимости и грешки в сигурността.

Ако вашият език за програмиране или стек няма опция за малко основно изображение, можете да създадете контейнера си, използвайки суров Алпийски Linux като отправна точка. Това също ви дава пълен контрол върху това, което влиза в контейнерите ви.

Поддържайте по-малки изображения на контейнери

Използването на по-малки базови изображения е може би най-лесният начин да намалите размера на контейнера си.

Вероятно вашият език или стек, който използвате, предоставя официално изображение, което е много по-малко от изображението по подразбиране. Например, нека разгледаме контейнера на Node.js. Преминаването от възела по подразбиране: последно до възел: 14-алпийски намалява размера на основното ни изображение почти десет пъти.

nodejs последен маркер - geekflare

срещу.….

nodejs алпийски маркер - geekflare

В новия файл на Docker контейнерът започва с node: alpine image, създава директория за кода, инсталира зависимости с NPM и накрая стартира сървъра Node.js. С тази актуализация полученият контейнер е почти десет пъти по-малък.

Вие създавате контейнера още по-лек, като използвате модела на строителя. С тълкувателни езици изходният код се изпраща на преводач и след това се изпълнява директно. Но с компилиран език, изходният код се превръща в компилиран код предварително.

Сега, с езиците на компилиране, стъпката на компилиране често изисква инструменти, които не са необходими за стартиране на кода. Това означава, че можете да премахнете тези инструменти от крайния контейнер напълно. За да направите това, можете да използвате модела на строителя. Първият контейнер изгражда кода и след това компилираният код се пакетира в крайния контейнер без всички компилатори и инструменти, необходими за извършване на компилирания код.

Използването на малки базови изображения и модела на строителя са чудесни начини за създаване на много по-малки контейнери без много работа.

Маркирайте вашите изображения на контейнери

Маркирането на Docker е изключително мощен инструмент за нас, когато става въпрос за управление на нашите изображения. Помага при управление на различни версии на изображение на докер. По-долу е даден пример за изграждане на изображение на докер с име на таг v1.0.1

docker build -t geekflare / ubuntu: v1.0.1

Сега се използват два типа тагове: стабилен тагове Уникален тагове.

Използвайте стабилни маркери за поддържане на основното изображение на контейнера. Избягвайте използването на тези маркери за контейнери за разполагане, защото тези тагове ще получават актуализации често и това може да доведе до несъответствия в производствената среда.

Използвайте уникални маркери за внедряване. Използвайки уникални маркери, можете лесно да мащабите производствения си клъстер до много възли. Той избягва несъответствия и хостовете няма да изтеглят друга версия на изображението на докер.

Освен това, като добра практика, трябва да заключите разгърнатите маркери на изображения, като зададете опцията за запис на запис на невярно. Това помага да не премахнете внедреното изображение от системния регистър по грешка.

Сигурност на контейнерите

По-долу са основните моменти за гарантиране на безопасността на контейнера.

  • Проверете автентичността на всеки софтуер, който инсталирате в контейнера си
  • Използвайте подписани докер изображения или изображения с валидна контролна сума.
  • Уверете се, че URL адресът използва HTTPS, ако използвате хранилище на трети страни.
  • Включете правилните GPG ключове, преди да използвате вашия мениджър на пакети за актуализиране на пакетите
  • Никога не стартирайте приложенията си като root. Винаги трябва да използвате указанието на потребителя в докерфайла, за да сте сигурни, че отпадате привилегиите на вашия потребител.
  • Не пускайте SSH във вашия контейнер.
  • Направете файловата система само за четене.
  • Използвайте пространства от имена, за да разделите клъстера си.

Центърът за интернет сигурност (CIS) е предоставил база за сравнение Docker за оценка на сигурността на контейнер за докер. Те са предоставили скрипт с отворен код, наречен Докер пейка за сигурност, който можете да стартирате, за да проверите колко сигурен е контейнер за докер.

Едно приложение на контейнер

Виртуалните машини са доста добри в паралелно изпълнение на няколко неща, но когато става въпрос за контейнери, трябва да стартирате едно приложение вътре в един контейнер. Например, ако използвате MEAN приложение в контейнеризирана среда, то трябва да има един контейнер за MongoDB, един контейнер за Express.js, един контейнер за Angular и един контейнер за Node.js.

Дори контейнерите могат да изпълняват множество приложения паралелно в него, но тогава можете да се възползвате от модела на контейнера. По-долу е правилно и грешно представяне на изпълняваните приложения в контейнер.

едно приложение един контейнер - geekflare

Контейнерите са проектирани да имат подобен жизнен цикъл на приложението, което изпълняват. Когато контейнерът стартира, приложението ще се стартира. Когато контейнер спре, приложението също спира.

Пуснете контейнери без гражданство

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

Задържайки съхранението извън контейнера, можете лесно да изключите или унищожите контейнер, без да се страхувате да загубите никакви данни.

Ако използвате контейнери без гражданство, е много лесно да се мигрират или мащабират според нуждите на бизнеса.

заключение

Горното е някои от най-важните практики, които трябва да следвате, докато работите с контейнери, ако създавате среда за производство на Docker, след това вижте как да го защитите.

ЕТИКЕТИ:

  • докер

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map