В голове я понимаю, как происходит старт контейнера, что за чем выполняется, но как оказалось не уверен в своих знаниях, и прошу меня поправить, если я в чем-то окажусь не прав или что-то забуду:
Исходные данные:
1. Готовый образ php:fpm-7.2
2. Созданный контейнер
Запускаем контейнер:
docker start container-name
Что происходит в этот момент:
- Подключение к docker-демону
- Поиск указанного контейнера
- Создание write-слоя в образе контейнера, который после остановки будет уничтожен
- Выделение ресурсов под запуск (storage, memory, cpu), подключение к сетям (если были указаны)
- Добавление links
- Запуск контейнера:
- Проверка доступности портов, которые пробрасываются наружу
- Проверка доступности volumes, если были указаны
- Установка рабочей директории и переменных окружения
- Добавление хостов (если были указаны)
- Запуск Entrypoint контейнера
- Старт служб (выполнение содержимого CMD)
- Выполнение команд для проверки работоспособности контейнера (healthcheck) - стартует при запуске и выполняется через определенный интервал для опроса