002 Архитектура Docker
Докер и виртуальная машина - это две разные вещи. Докер не использует супервизоры и не поднимает полноценную гостевую ОС, чтобы поднять внутри неё контейнезированное приложение.
htop
позволяет просмотреть процессы в linux и управлять ими
При запуске процесса внутри docker, мы запускаем новый namespace, который в себя включается
- Cgroups - определяет ограничения по памяти и ресурсам процессора
- IPC - определяет коммуникацию между процессами
- Network
- Mount - определяет доступность директорий
- PID - свои Process ID
- User
- UTS
Контейнер докера - это изолированный namespace с обвязками докера, который запускается на хостовой машине
Docker использует ядро Linux хоста и image содержит только необходимые бинарные файлы, библиотеки и приложения
Докер делится на две части: клиентская часть CLI и хостовая, которая принимает запросы от CLI и выполняет нужные команды
На клиенте мы отправляем команды в докер по API, который отправляет запрос в докер daemon. Daemon проверяет, есть ли нужный образ локально. Если образ отсутствует, то он обращается в общий registry и подтягивает образ оттуда и потом запускает контейнер
003 Управление контейнерами
Для упрощения работы с контейнерами их команды были вынесены наверх
вместо
мы можем писать
У нас есть достаточное количество команд для контроля ЖЦ контейнера:
docker run
- создаст контейнер и запустит егоdocker create
- создаст контейнер в остановленном видеdocker kill / stop
- останавливает работу контейнераdocker rm
- удалит контейнер (--force
убьёт и удалит запущенный контейнер)
Первая команда показывает запущенные контейнеры. Ключ -a
покажет все контейнеры, включая остановленные
Удаление контейнера
Создаём контейнер из образа mongo
, который будет с указанными именем my-mongo
. Флаг -d
позволяет отцепить процесс от текущего bash и запустить его в отдельной сессии
Когда мы пользуемся определённой сменой состояния процесса, мы посылаем сигнал
Удаляет все остановленные контейнеры
Переименование контейнера
004 Логи и статистика работы
Показывает всю статистику занимаемого пространства и ресурсов по контейнерам
Показывает всю информацию по нужному контейнеру
Позволит вывести логи контейнера
005 Команды в контейнере
Докер нам так же предоставляет возможность запускать команды внутри
позволяет установить и просмотреть локальные переменные
А тут мы уже залезли внутрь контейнера и можем выполнять различные операции над ним
Так же мы можем вывод из консоли вывести в отдельный файл, если нам потребуется
Тут сразу нужно сказать, что команда вывода и сохранения в новый файл происходит вне контейнера
Если нужно запустить команду внутри контейнера, то можно сделать таким образом: