ћерион Ќетворкс

5 минут

Docker - программное обеспечение с открытым исходным кодом, предназначенное дл€ упрощени€ и ускорени€ разработки приложений. Ёто набор продуктов PaaS (Platform as a Service) - ѕлатформа как услуга, которые создают изолированные виртуализированные среды дл€ создани€, развертывани€ и тестировани€ приложений.

Ќесмотр€ на то, что программное обеспечение относительно просто в управлении, существуют некоторые специфичные дл€ Docker термины, в которых путаютс€ новые пользователи. ƒокерфайлы, образы, контейнеры, тома и друга€ терминологи€ должны быть освоены раз и навсегда.

ѕонимание элементов Docker ускорит обучение работе с ним. ѕервый вопрос, который задают многие пользователи: "¬ чем разница между образом Docker и контейнером?"


„то такое Docker Image

ќбраз Docker (Docker Image) - это неизмен€емый файл, содержащий исходный код, библиотеки, зависимости, инструменты и другие файлы, необходимые дл€ запуска приложени€.

»з-за того, что образы предназначены только дл€ чтени€ их иногда называют снимками (snapshot). ќни представл€ют приложение и его виртуальную среду в определенный момент времени. “ака€ согласованность €вл€етс€ одной из отличительных особенностей Docker. ќн позвол€ет разработчикам тестировать и экспериментировать программное обеспечение в стабильных, однородных услови€х.

“ак как образы €вл€ютс€ просто шаблонами, их нельз€ создавать или запускать. Ётот шаблон можно использовать в качестве основы дл€ построени€ контейнера.  онтейнер - это, в конечном счете, просто образ. ѕри создании контейнера поверх образа добавл€ет слой, доступный дл€ записи, что позвол€ет мен€ть его по своему усмотрению.

ќбраз - это шаблон, на основе которого создаетс€ контейнер, существует отдельно и не может быть изменен. ѕри запуске контейнерной среды внутри контейнера создаетс€ копи€ файловой системы (docker образа) дл€ чтени€ и записи.

Docker Container

ћожно создать неограниченное количество образов Docker из одного шаблона.  аждый раз при изменении начального состо€ни€ образа и сохранении существующего состо€ни€ создаетс€ новый шаблон с дополнительным слоем поверх него.

“аким образом, образы Docker могут состо€ть из р€да слоев, каждый из которых отличаетс€ от предыдущего. —лои образа представл€ют файлы, доступные только дл€ чтени€, поверх которых при создании контейнера добавл€етс€ новый слой.


„то такое Docker Container?

 онтейнер Docker (Docker Container) - это виртуализированна€ среда выполнени€, в которой пользователи могут изолировать приложени€ от хостовой системы. Ёти контейнеры представл€ют собой компактные портативные хосты, в которых можно быстро и легко запустить приложение.

¬ажной особенностью контейнера €вл€етс€ стандартизаци€ вычислительной среды, работающей внутри контейнера. Ёто не только гарантирует, что ваше приложение работает в идентичных услови€х, но и упрощает обмен данными с другими партнерами по команде.

 онтейнеры работают автономно, изолированно от основной системы и других контейнеров, и потому ошибка в одном из них не вли€ет на другие работающие контейнеры, а также поддерживающий их сервер. Docker утверждает, что эти блоки Ђобеспечивают самые сильные возможности изол€ции в отраслиї. ѕоэтому при разработке приложени€ вам не придетс€ беспокоитьс€ о безопасности компьютера.

¬ отличие от виртуальных машин, где виртуализаци€ выполн€етс€ на аппаратном уровне, контейнеры виртуализируютс€ на уровне приложений. ќни могут использовать одну машину, совместно использовать ее €дро и виртуализировать операционную систему дл€ выполнени€ изолированных процессов. Ёто делает контейнеры чрезвычайно легкими, позвол€€ сохран€ть ценные ресурсы.

Container vs VM

ќбраза Docker в сравнении с Docker контейнерами

√овор€ о разнице между образами и контейнерами, было бы неверно противопоставл€ть их друг-другу. ќба элемента тесно св€заны между собой и €вл€ютс€ основными шестерЄнками Docker.

»з определени€ терминов образ и контейнер выше, легко установить св€зь между ними: образы могут существовать без контейнеров, тогда как дл€ существовани€ контейнеров необходимо запустить образ. ѕоэтому контейнеры завис€т от изображений и используют их дл€ создани€ среды выполнени€ и запуска приложени€.

Ёти две концепции существуют как важные компоненты (или, скорее, фазы) в процессе запуска контейнера Docker. Ќаличие рабочего контейнера €вл€етс€ конечной Ђфазойї этого процесса, указыва€, что он зависит от предыдущих этапов и компонентов. »менно поэтому образ docker по существу управл€ют контейнерами и формируют их.


»з Dockerfile к образу и контейнеру

¬се начинаетс€ с последовательности инструкций, определ€ющих способ построени€ определенного образа Docker Ц Dockerfile. ƒанный файл автоматически выполн€ет команды скрипта и создает образ Docker.

ƒл€ создани€ образа из Dockerfile используетс€ команда docker build.

«атем образ используетс€ в качестве шаблона, который разработчик может скопировать и использовать дл€ запуска приложени€. ѕриложению необходима изолированна€ среда дл€ выполнени€ - контейнер.

Ёта среда - не просто виртуальное Ђпространствої. ќна полностью зависит от образа, на базе которого была создана. »сходный код, файлы, зависимости и двоичные библиотеки, которые наход€тс€ в образе Docker, составл€ют контейнер.

„тобы создать слой контейнера из образа, используйте команду docker create.

Ќаконец, после запуска контейнера из существующего образа вы запускаете его службу и запускаете приложение.

Dockerfile, Image, Container

—оздание образа из контейнера.

≈сли вы вносите изменени€ в исходный образ и хотите сохранить его дл€ дальнейшей работы, можно сохранить измененный образ, сделав снимок текущего состо€ни€ контейнера. “аким образом, слой контейнера прикрепл€етс€ поверх образа, в конечном итоге создава€ новый неизмен€емый образ. ¬ результате получаетс€ два образа Docker, полученные из одной файловой системы.


«аключение

ƒанна€ стать€ должна помочь пон€ть, что такое образ Docker, что такое контейнер и как они св€заны. ≈сли поймете процесс создани€ контейнера, поймете разницу между образом и контейнером.


—кидки 50% в Merion Academy

¬ыбрать курс