Урок за Docker за начинаещи: Основи, Archiтекстура, Контейнери

⚡ Умно обобщение

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

  • ???? Контейнеризация: Docker виртуализира на ниво операционна система, така че контейнерите споделят ядрото на хоста и използват по-малко ресурси от виртуалните машини.
  • 🧱 Archiтекстура: Docker енджинът (dockerd), изображенията, регистрите и контейнерите формират клиент-сървърната архитектура, която стои зад всеки Docker работен процес.
  • 📦 Изображения и контейнери: Изображението е шаблон само за четене, докато контейнерът е работещо копие и едно изображение може да стартира много контейнери.
  • 🗄️ Регистри: Docker Hub съхранява публични и частни изображения, предоставяйки ви милиони готови за употреба изображения за изтегляне и изпълнение.
  • Монтаж: On Ubuntu Добавяте Docker APT хранилището и GPG ключа, след което инсталирате пакета docker-ce с apt-get.
  • Основни команди: Управлявайте контейнери с docker pull, run, start, stop, ps, stats и images от командния ред.

Урок за начинаещи по Docker, обхващащ архитектурата и инсталацията Ubuntuи основни команди за контейнери

Docker е една от най-популярните платформи за контейнеризация, използвани в съвременния... DevOps и облачни работни потоци. Този урок за начинаещи за Docker обяснява какво е Docker, как работи архитектурата на Docker, как да инсталирате Docker на Ubuntuи основните команди, използвани за управление на изображения и контейнери.

Какво е Docker?

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

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

Виртуализация в Docker срещу Hypervisor
Виртуализация в Docker срещу Hypervisor

За разлика от виртуалните машини, които могат да комуникират директно с хост хардуера (например Ethernet адаптер, който създава още виртуални адаптери), Docker контейнерите работят в изолирана среда върху хост операционната система. Дори ако вашият хост работи Windows, можеш да бягаш Linux изображения в контейнери с помощта на Hyper-V, което автоматично създава малка виртуална машина за виртуализиране на базовия образ.

След като вече знаете какво е Docker, нека разгледаме основните причини, поради които екипите го избират.

Защо да използвате Docker?

Ето основните причини да използвате Docker:

  • Docker е софтуер, използван за виртуализация, който позволява множество операционна система да работи на същия хост.
  • Docker е клиент-сървър приложение, което означава, че клиентите комуникират със сървър.
  • Docker изображенията действат като „изходен код“ за контейнери; използвате ги за изграждане.
  • Docker поддържа два вида регистри: публични и частни.
  • Контейнерите са организационните единици на Docker. Казано по-просто, изображението е шаблон, а контейнерът е копие на този шаблон, така че можете да стартирате множество контейнери от едно и също изображение.

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

докер Archiтекстура

Сега, в този урок за Docker контейнери, нека разгледаме основните компоненти на Docker архитектурата.

докер Archiкомпоненти на текстурата: енджин, изображения, регистри и контейнери

докер Archiтекстура

Докер Двигател

Docker е клиент-сървър приложение, което означава, че имаме клиенти, които препращат заявки към сървър. Docker демонът, наречен dockerd, е Docker енджинът, който представлява сървъра. Демонът и клиентите могат да работят на един и същ или отдалечен хост и комуникират чрез клиентски двоичен файл от командния ред и пълен... RESTful API който взаимодейства с dockerd.

Изображения на Docker

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

Докер регистри

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

Docker контейнери

Контейнерите са организационните единици на Docker и една от основните му концепции. Когато изграждаме образ и го изпълняваме, ние го изпълняваме вътре в контейнер. Аналогията с контейнера се използва поради преносимостта на софтуера, работещ вътре в него: можете да го местите, „изпращате“, променяте, управлявате, създавате или унищожавате, точно както товарните кораби боравят с истински контейнери.

С прости думи, изображението е шаблон, а контейнерът е копие на този шаблон. Можете да имате няколко контейнера (копия) на едно и също изображение.

Взаимодействието между тези различни компоненти показва как технологията на Docker контейнерите работи заедно. Команди като docker pull и docker run, които ще разгледаме по-късно, ви позволяват да управлявате този работен процес.

Имайки предвид архитектурата, нека инсталираме Docker, за да можете сами да изпробвате тези компоненти.

Как да инсталирате Docker на Linux/Ubuntu

По-долу е показан стъпка по стъпка процес на инсталиране на Docker в Linux/Ubuntu:

Стъпка 1) За да инсталирате Docker, ви трябват DEB пакетите на екипа на Docker. Първо, някои предварителни изисквания Ubuntu Необходими са пакети. Използвайте командата по-долу, за да ги инсталирате.

$ sudo apt-get install \
apt-transport-https \
ca-certificates curl \
software-properties-common

*знакът “\” не е необходим, той се използва за новия ред, ако искате можете да напишете командата без да използвате “\” само на един ред.

Стъпка 2) Добавете официалния Docker GPG ключ с пръстовия отпечатък. Използвайте командата Docker по-долу, за да въведете GPG ключа.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Стъпка 3) След това добавете хранилището на Docker APT, като използвате командата по-долу.

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

Може да бъдете подканени да потвърдите, че искате да добавите хранилището и GPG ключът да бъде автоматично добавен към вашия хост. Командата lsb_release трябва да попълни Ubuntu версия за разпространение на вашия хост.

Стъпка 4) След добавяне на GPG ключа, актуализирайте APT източниците, като използвате командата Docker по-долу.

$ sudo apt-get update

Вече можете да инсталирате самия Docker пакет.

Стъпка 5) След като APT източниците бъдат актуализирани, започнете да инсталирате Docker пакетите на Ubuntu използвайки командата на Docker по-долу.

$ sudo apt-get install docker-ce

Командата по-горе инсталира Docker и други необходими пакети. Преди Docker 1.8.0 името на пакета беше lxc-docker, а между Docker 1.8 и 1.13 името на пакета беше docker-engine.

ЗАБЕЛЕЖКА: Докер за Windows Изисква Windows 10 Pro или Enterprise версия 14393, или Windows Server 2016 RTM, за да се изпълнява.

Как да използвате Docker с помощта на основни Docker команди

Ето как да използвате Docker с няколко основни Docker команди.

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

$ sudo docker info

Трябва да получите резултат, подобен на следния.

Използвайте Docker, използвайки основни Docker команди, показвайки изхода на docker информация

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

$ sudo docker pull alpine

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

*alpine е минимален Docker образ, базиран на Alpine Linux с пълен индекс на пакета и размер само 5 MB.

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

$ sudo docker run -i -t alpine /bin/bash

Изпълнението на командата ни изпраща директно към терминала Alpine. Флагът -i държи STDIN отворен от контейнера, дори когато не сте свързани към него; този постоянен стандартен вход е едната половина от това, което ви е необходимо за интерактивна обвивка. Флагът -t е другата половина и инструктира Docker да присвои псевдо-tty на контейнера. Заедно те ни дават интерактивна обвивка в новия контейнер. Излизаме от контейнера с проста команда exit.

Сега, в този урок за основите на Docker, можем да опитаме да изпълним Ubuntu изображение.

$ sudo docker run -it ubuntu /bin/bash

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

$ sudo docker run –-name our_container -it ubuntu /bin/bash

След това излизаме отново. Можем също да стартираме контейнер, който създадохме преди това, без интерактивна обвивка.

$ sudo docker start container_name

И спираме контейнера, като напишем docker stop container_name.

$ sudo docker stop container_name

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

$ docker ps

За всички контейнери добавяме „-a“ в края на същата команда, подобно на docker ps -a. Тази команда показва идентификатора на контейнера, кой образ използва, кога е създаден, състоянието му на изпълнение, откритите портове и произволно генерирано име за по-лесно управление.

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

$ docker stats

Можете също да видите кои изображения сте изтеглили локално, заедно с информация за тях.

$ sudo docker images

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

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

Какво е виртуализация?

Преди това внедряването на услуга беше бавно и мъчително. Разработчиците пишеха код, а след това оперативният екип го внедряваше на машини с „голо желязо“, където трябваше да следят за версии на библиотеки, пачове и езикови компилатори, за да работи кодът. Ако имаше грешки или грешки, процесът започваше отначало: разработчиците отстраняваха проблема, а оперативният екип преразполагаше.

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

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

Важни Docker команди

По-долу са важните Docker команди:

Команда Descriptйон
докер информация Информационно командване
докер издърпване Изтегляне на изображение
docker run -i -t име_на_изображение /bin/bash Стартирайте изображението като контейнер
docker стартирайте нашия_контейнер Стартов контейнер
докер спиране на контейнер_име Спрете контейнера
докер ps Списък на всички работещи контейнери
докер статистика Информация за контейнера
снимки на докер Списък с изтеглени изображения
Докер почистване Убийте всички работещи контейнери.

Също така, прочетете тези Въпроси и отговори за интервю за работа на докер както за начинаещи, така и за опитни професионалисти.

Въпроси и Отговори

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

Dockerfile е скрипт в обикновен текст, съдържащ инструкции като FROM, RUN, COPY и CMD. Docker чете тези инструкции, за да изгради автоматично образ. Всеки ред добавя слой, което ви позволява да възпроизведете същата среда на всяка машина.

Docker Compose дефинира и изпълнява многоконтейнерни приложения, използвайки един YAML файл. Описвате всяка услуга, мрежа и том веднъж, след което стартирате всичко с командата docker compose up. Идеален е за локално разработване и тестване на свързани услуги.

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

Docker Engine е безплатен и с отворен код под лиценза Apache 2.0. Docker Desktop е безплатен за лична употреба, образование и малки предприятия, но по-големите компании се нуждаят от платен абонамент. Docker Hub предлага както безплатни, така и платени планове за хостинг на изображения.

Docker работи директно на Linux и се поддържа от Windows намлява macOS чрез Docker Desktop. Включено Windows и Mac, Docker използва лека виртуална машина, за да стартира Linux ядрото, което контейнерите изискват. Повечето образи на контейнери са базирани на Linux.

Асистентите с изкуствен интелект генерират Docker файлове, docker-compose файлове и CLI команди от подкани на разбираем език. Те също така четат лог файлове за компилация и грешки в контейнерите, обясняват причината и предлагат решения. Винаги преглеждайте генерираната конфигурация за правилни тагове на изображенията, пътища и сигурност, преди да я стартирате.

Да. Копилот на GitHub и ChatGPT може да създава Dockerfiles и Compose файлове от кратък коментар или описание. Те ускоряват boilerplate, но трябва да проверите базовите изображения, версии и най-добри практики, защото генерираните фрагменти може да използват остарели настройки по подразбиране.

Обобщете тази публикация с: