Какво представлява Docker Container? - Съдържайте приложението си с помощта на Docker



Docker Container е леко алтернативно решение на виртуалната машина за създаване, внедряване и стартиране на приложения в контейнер.

Е, надявам се, че сте чели предишните ми блогове на Докер където разгледах основите на Docker. Тук, в този блог на Docker Container ще обсъждам какво представляват Docker Containers и как работи. Най-вече ще се съсредоточим върху практически и случаи на използване на Docker.

Изброих темите за този блог на Docker Container:





  • Защо се нуждаем от Docker контейнери?
  • Как работят контейнерите на Docker?
  • Случаи на употреба на Docker Container

Защо се нуждаем от Docker контейнери?

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

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



как да конвертирате double в int

Помислете за примера по-долу:

Приложение за онлайн пазаруване - Docker Container - Edureka

В горната диаграма има онлайн магазин с отделни микроуслуги за потребителски акаунт, продуктов каталог, обработка на поръчки и колички за пазаруване.



Е, тази архитектура има много предимства:

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

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

В тази архитектура използвахме виртуални машини CentOS. Тези виртуални машини бяха конфигурирани чрез писане на дълги скриптове. Е, конфигурирането на тези виртуални машини не беше единственият проблем.

Разработването на такива приложения изисква стартиране на няколко микроуслуги в една машина. Така че, ако стартирате пет от тези услуги, имате нужда от пет виртуални машини на тази машина. Помислете за диаграмата по-долу:

Другият проблем е доста често срещан, знам, че много от вас могат да се свържат с него. Приложението работи в лаптопа на разработчика, но не и при тестване или производство. Това може да се дължи на неспазване на постоянна изчислителна среда. Помислете за диаграмата по-долу:

Освен това имаше и много други проблеми, но чувствам, че тези проблеми са ми достатъчни, за да ви обясня нуждата от Docker Containers.

Научете как контейнерите на Docker са по-добри от виртуалните машини

Така че, представете си, ако давам 8 GB RAM на всичките си виртуални машини и имам 5 микросервиза, работещи на различни виртуални машини. В този случай тези виртуални машини ще изискват 40 GB RAM. Е, сега изисквам конфигурациите на хост машината ми да бъдат много високи, почти 44 GB RAM трябва да са там в моята хост машина. Очевидно това не е устойчиво решение за такава архитектура, защото тук губя много ресурси.

Добре, имам много ресурси, за да ги пропиля, но въпреки това имам проблем с несъответствието в моя жизнен цикъл на доставка на софтуер (SDLC). Трябва да конфигурирам тези виртуални машини както в тест, така и в прод среда. Някъде в този процес някои софтуери не бяха актуализирани в тестовия сървър и екипът на Dev използва обновената версия на софтуера. Това води до конфликти.

Ами ако използвам 100 виртуални машини, конфигурирането на всяка виртуална машина ще отнеме много време и в същото време е склонна и към грешки.

Нека сега разберем какво представлява Docker Container и как работи и как е решил проблема ми.

Какво представлява Docker Container?

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

Можете да създадете контейнери на Docker, тези контейнери ще съдържат всички двоични файлове и библиотеки, необходими за вашето приложение или микросервиз в моя случай. Така че вашето приложение присъства в контейнер или сте го контейнерирали. Сега същият контейнер може да се използва в средата Test и Prod.

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

Нека разберем сега как работи контейнер на Docker.

Как работи Docker Container?

Диаграмата по-долу е основно начин за използване на Docker. И предполагам, че имате представа за Docker Image и Dockerfile.

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

  • Разработчикът първо ще напише кода на проекта във файл на Docker и след това ще изгради изображение от този файл.
  • Това изображение ще съдържа целия код на проекта.
  • Сега можете да стартирате това изображение на Docker, за да създадете толкова контейнери, колкото искате.
  • Това изображение на Docker може да бъде качено в Docker hub (Това е основно хранилище в облак за вашите Docker изображения, можете да го запазите публично или частно).
  • Това изображение на Docker в центъра на Docker може да бъде изтеглено от други екипи като QA или Prod.

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

Това беше един от начините да го използвам, предполагам, че вие ​​трябва да сте любопитни да разберете как използвах Docker, за да реша проблема си с микроуслугите. Позволете ми да ви дам преглед на същото.

По-долу е обяснението на диаграмата:

  • Първо, написахме сложните изисквания в Dockerfile.
  • След това го натиснахме на GitHub.
  • След това използвахме CI сървър (Jenkins).
  • Този сървър на Jenkins ще го изтегли от Git и ще изгради точната среда. Това ще се използва в производствени сървъри, както и в тестови сървъри.
  • Разположихме го на етап (Той се отнася до внедряването на вашия софтуер на сървъри за целите на тестването, преди да ги внедрим изцяло в производствена среда) среди за тестери.
  • По същество ние въведохме точно това, което имахме в разработването, тестването и поставянето в производство.

Всъщност ще бъде справедливо да кажа, че Docker улесни живота ми.

Е, това беше историята на моята компания, нека разгледаме казуса на Университета в Индиана. Как Docker решава проблемите им.

Казус от университета в Индиана:

Университетът в Индиана е държавна университетска система с няколко кампуса в щата Индиана, САЩ.

Декларация за проблема

Те използваха персонализирани скриптове за разполагане на приложенията във виртуалната машина.

Средата им беше оптимизирана за техните наследени приложения, базирани на Java. Растежът им включва нови продукти, които не са базирани само на Java. За да даде на своите студенти възможно най-добрия опит, Университетът трябва да започне модернизация на приложенията.

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

Беше необходима сигурност за данните на студентите, като SSN и здравни данни на студентите.

Решение:

Всички проблеми бяха адресирани от Docker Data Center (DDC), разгледайте диаграмата по-долу:

Докер доверен регистър - Съхранява изображенията на Docker.

UCP (Universal Control Plane) Web UI - Помага при управлението на цял клъстер от едно място. Услугите се разполагат с помощта на UCP уеб потребителски интерфейс, като се използват Docker изображения, които се съхраняват в DTR (Docker Trusted Registry).

Екипите на ИТ операторите използват Universal Control Plane, за да предоставят инсталиран софтуер на Docker на хостове и след това разгръщат техните приложения, без да се налага да правят куп ръчни стъпки, за да настроят цялата си инфраструктура.

UCP и DTR се интегрират със своя LDAP сървър, за да осигурят бързо достъп до техните приложения.

Надявам се, че сте прочели предишните блогове, за да научите основите на Docker.

Сега ще ви обясня как можем да използваме Docker Compose за многоконтейнерно приложение.

Docker Hands-On:

Предполагам, че сте инсталирали Docker.Ще използвам Docker Compose в тази публикация, по-долу съм дал малко въведение в Docker Compose.

Съставяне на докер: Това е инструмент за дефиниране и изпълнение на многоконтейнерни приложения на Docker. С Docker Compose можете да използвате файл за съставяне, за да конфигурирате услугите на приложението си. След това, като използвате една команда, можете да създадете и стартирате всички услуги от вашата конфигурация.

Да предположим, че имате множество приложения в различни контейнери и всички тези контейнери са свързани помежду си. Така че, не искате да изпълнявате всеки от тези контейнери един по един. Но вие искате да стартирате тези контейнери с една команда. Това е мястото, където Docker Compose влиза в картината. С него можете да стартирате множество приложения в различни контейнери с една команда. т.е. докер-композирайте.

Пример: Представете си, че имате различни контейнери, един изпълнява уеб приложение, друг изпълнява postgres и друг изпълнява redis, в YAML файл. Това се нарича docker compose file, оттам можете да стартирате тези контейнери с една команда.

Нека вземем още един пример:

Да предположим, че искате да публикувате блог, за това ще използвате CMS (система за управление на съдържанието), а wordpress е най-широко използваната CMS. По принцип имате нужда от един контейнер за WordPress и имате нужда от още един контейнер като MySQL за заден край, този контейнер MySQL трябва да бъде свързан с контейнера за WordPress. Също така се нуждаем от още един контейнер за Php Myadmin, който ще бъде свързан с базата данни MySQL, като основно се използва за достъп до базата данни MySQL.

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

Включени стъпки:

  1. Инсталирайте Docker Compose :
  2. Инсталирайте WordPress: Ще използваме официалния WordPress и MariaDB Docker изображения.
  3. Инсталирайте MariaDB: Това е един от най-популярните сървъри за бази данни в света. Направен е от оригиналните разработчици на MySQL. MariaDB е разработена като софтуер с отворен код и като релационна база данни предоставя SQL интерфейс за достъп до данни.
  4. Инсталирайте PhpMyAdmin: Това е безплатен софтуерен инструмент, написан на PHP, предназначен да се справи с администрирането на MySQL през мрежата.
  5. Създайте сайта на WordPress:

Да започваме!

Инсталиране на Docker Compose:

Първо инсталирайте Python Pip:

sudo apt-get инсталирайте python-pip

Сега можете да инсталирате Docker Compose:

sudo pip инсталирайте docker-compose

Инсталирайте WordPress:

Създайте директория на wordpress:

mkdir wordpress

Въведете тази директория на wordpress:

cd wordpress /

В тази директория създайте Docker Compose YAML файл, след което го редактирайте с помощта на gedit:

sudo gedit docker-compose.yml

Поставете долните редове код в този файл на yaml:

wordpress: image: wordpress връзки: - wordpress_db: mysql портове: - 8080: 80 wordpress_db: image: mariadb среда: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin връзки: - wordpress_db: mysql портове: - 8181: 80 MYSQL_USERNAME: корен MYSQL_ROOT_PASSWORD: edureka

Знам, че искате да обясня този код, така че това, което ще направя, ще взема малки части от този код и ще ви обясня какво се случва.

wordpress_db: ... среда: MYSQL_ROOT_PASSWORD: edureka ...

Това ще зададе променлива на средата в контейнера на wordpress_db, наречена MYSQL_ROOT_PASSWORD, с желаната от вас парола. Образът на MariaDB Docker е конфигуриран да проверява за тази променлива на средата, когато се стартира и ще се погрижи за настройката на DB с корен акаунт с парола, дефинирана като MYSQL_ROOT_PASSWORD.

wordpress: ... портове: - 8080: 80 ...

Първият номер на порт е номерът на порта на хоста, а вторият номер на порт е портът в контейнера. И така, тази конфигурация препраща заявките на порт 8080 на хоста към порта по подразбиране на уеб сървъра 80 вътре в контейнера.

phpmyadmin: image: corbinu / docker-phpmyadmin връзки: - wordpress_db: mysql ports: - 8181: 80 среда: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Това грабва docker-phpmyadmin от член на общността corbinu, свързва го с нашия wordpress_db контейнер с името mysql (което означава от вътрешността на phpmyadmin препратките към името на хоста mysql ще бъдат препратени към нашия wordpress_db контейнер), излага своя порт 80 на порт 8181 на хост система и накрая задава няколко променливи на средата с нашите потребителско име и парола MariaDB. Това изображение не взема автоматично променливата на средата MYSQL_ROOT_PASSWORD от средата на wordpress_dbcontainer, както прави изображението на wordpress. Всъщност трябва да копираме реда MYSQL_ROOT_PASSWORD: edureka от контейнера wordpress_db и да зададем потребителското име на root.

Сега стартирайте групата приложения:

docker-compose up -d

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

Сега в браузъра отидете на порт 8080, като използвате публичния си IP или име на хост, както е показано по-долу:

localhost: 8080

Попълнете този формуляр и кликнете върху инсталиране на WordPress.

След като приключи, посетете отново IP адреса на сървъра си (този път с помощта на порт 8181, напр. Localhost: 8181). Ще бъдете посрещнати от екрана за вход в phpMyAdmin:

Продължете и влезте с помощта на корен на потребителско име и парола, които сте задали във файла YAML, и ще можете да разглеждате вашата база данни. Ще забележите, че сървърът включва база данни на wordpress, която съдържа всички данни от вашата инсталация на WordPress.

Тук завършвам моя блог на Docker Container. Надявам се да ви е харесал този пост. Можете да проверите други блогове в поредицата също, които се занимават с основите на Docker.

Ако сте намерили този блог на Docker Container подходящ, разгледайте от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят. Курсът за обучение за сертифициране Edureka DevOps помага на обучаващите се да придобият опит в различни процеси и инструменти на DevOps като Puppet, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack и GIT за автоматизиране на множество стъпки в SDLC.

Имате въпрос към мен? Моля, споменете го в раздела за коментари и ще се свържа с вас.