Выделять под приложение целую виртуалку, устанавливать и настраивать операционную систему, раздавать права доступа — слишком дорого. В большинстве случаев достаточно простого окружения, в котором запустится приложение. Для этого как раз подходит контейнер, который вмещает одно главное приложение. Контейнеры и виртуальные машины — это разные способы виртуализации. Только виртуалка реализует её на уровне железа, а Docker — на уровне операционной системы. В Dockerfile записываются команды и опции создания образа, а также некоторые настройки будущего контейнера, такие как порты, переменные окружения и другие опции.
Термин «контейнер» на самом деле является просто абстрактным понятием, описывающим, как несколько различных функций работают вместе, чтобы визуализировать своеобразный «контейнер». В статьях о Docker часто встречаются слова на «контейнеры» и «образы». Это не одно и то же, хотя иногда они используются как синонимы. Если вы заинтересовались контейнеризацией, то уже наверняка слышали о Docker.
Что такое Docker Container?
Как вы уже знаете, для запуска контейнера Docker, понадобится образ. Он загружается из репозитория Docker Hub, где любой может разместить своё приложение или дистрибутив. Еще одна возможность Docker — распределение ресурсов между разными приложениями. Неизолированные процессы могут конкурировать за память и вычислительные мощности процессора. Docker позволяет эффективнее использовать ресурсы и не допускать конфликтов. Docker позволяет перенести приложение со всеми зависимостями на другую систему с помощью пары команд в терминале.
Так как у нас еще нет скачанного образа python, то докер сам скачает его из Docker Hub и затем будет использовать его в качестве основы для создания нашего образа. Это простой текстовый файл, содержащий по одной команде в каждой строке. В нем указываются все программы, зависимости https://deveducation.com/ и образы, которые нужны для разворачивания образа. Это некоторый резидентный процесс, который запущен на хост-машине постоянно. Он владеет всей инфраструктурой, а также предоставляет интерфейс взаимодействия с контейнерами, включающего создание и удаление, запуск и остановку.
Система команд LinuxСкопировать ссылку
Это сделано в целях безопасности, чтобы злоумышленнику не достались все root-права, если бы он смог выбраться из контейнера. Network namespace — контейнер получит свой сетевой стек, а значит, он не сможет получить доступ к сокетам или сетевым интерфейсам другого контейнера. Ещё недавно приложения разворачивали на физических серверах, поэтому возникали сложности, когда это нужно было сделать быстро. Теперь попробуйте запустить более сложный, используя образ Ubuntu.
Также можно подключать к контейнеру хранилище, объединять контейнеры одной или несколькими сетями и общаться с контейнерами, используя Docker API или CLI. Мы вызвали команду «docker run», отвечающую за запуск контейнеров. Сначала поиск образа «hello-world» проводился в вашей системе, а после неуспешной попытки его обнаружения стартовал в Docker Hub, где и был обнаружен нужный образ.
Как создать Docker-контейнер
Мы рассказали основы технологий, но не затронули более сложные темы, вроде Docker Swarm, настройку сети или настройки процессов CI/CD. Но этого вполне достаточно, чтобы погрузиться в основы технологий. Теперь приведем список полезных команд, которые могут пригодиться при работе с докером.
Чем больше слоёв, тем дольше будет собираться образ и дольше загружаться контейнер. Финальный Docker-образ — это объединение всех слоев в один. Благодаря такому подходу можно переиспользовать уже готовые образа для создания новых образов.
Посмотреть список всех скачанных образов
Выделенный сервер у хостинг-провайдера, к примеру, будет запускаться на «железном» гипервизоре, а у вас, скорее всего — на программном типа VMWare или VirtualBox. Как уже было замечено выше, Docker – это в первую очередь удобство. Выполнить многие действия – к примеру, создать готовое для запуска приложение или установить дополнительное ПО – становится намного проще и быстрее. Используя Docker, вы сможете оптимизировать свою работу и экономить время. За время своего существования Docker из небольшого внутреннего проекта превратился в мощную инструмент для работы с контейнерами.
Можно создать неограниченное количество образов Docker из одного шаблона. Каждый раз при изменении начального состояния образа и сохранении существующего состояния создается новый шаблон с дополнительным слоем поверх него. Соответственно, следует ознакомиться со способом сохранения текущего контейнера как что такое docker нового образа. Проведенные изменения в контейнере распространяются только на него. Строчка OK в столбце OFFICIAL говорит о том, что образ создан и его поддержка осуществляется компанией, ответственной за этот проект. Выбрав требуемый образ, его можно скачать на компьютер, используя подкоманду pull.