Doker Flashcards
Что такое Doker, какую проблему решает?
Докер - средство упаковки, доставки и запуска приложений.
Работает по принципу контейнеризации, придя на смену виртуализации.
Виртуализация - создание несколих виртуальных машин (со своей “гостевой” ОС) на одном физическом сервере. Приложение развернуто внутри такой машины изолированно, и если машина переедет на другой физ. сервер - приложение даже не заметит.
Контейнеризация тоже создает изолированную виртуальную среду, но полностью работает на единой хостящей ОС.
В итоге докер - это единый процесс основной ОС сервера, он не имеет своей полноценной ОС.
Таким образом
- мы экономим ресурсы, используя ядро ОС хоста, не устанавливая отдельную ОС на каджую виртуальную машину.
- экономим время на деплой, особенно если у нас микросервисы.
- память под процесс выделяется динамически, и контейнер может потреблять ее то меньше, то больше, а под виртуальный сервер память выделяется заранее и с запасом.
- контейнер легче перенести или масштабировать
Что такое dockerfile, docker-compose?
dockerfile - файл без расширения, содержащий инструкции для создания образа контейнера.
метафорический рецепт.
docker-compose - yaml файл, на основе которого докер настроит связи между контейнерами.
Doker image vs Doker container?
image - read-only шаблон контейнера, созданный на основе dockerfile и содержащий все нужные зависимости, описывает как докеру создавать контейнер.
Каждая команда dockerfile - новый слой образа. Поэтому поэтому размещать слои надо от наименее к наиболее изменяемым.
В образе содержится образ базовой операционной системы, код приложения, библиотеки, от которого оно зависит. Всё это скомпоновано в виде единой сущности, на основе которой можно создать контейнер.
container - готовое к запуску приложение в котором выполняется программа. Контейнеров на основе образа может быть сколько угодно. Контейнер никак не влияет на образ.
Контейнер - файл (image / образ), содержащий приложение, зависимости и инструкции.
Работа контейнера - это выполнение образа.
Как залезть в работающий Doker контейнер через командную строку?
docker exec -it container_name bash
docker exec -it - вызов виртуального терминала докера