Контейнеры Docker используются для изоляции того сервиса, который вы в нем запускаете, от остальной части системы. В этом смысле они не отличаются от виртуальной машины.
Вы должны установить нужный вам сервис, например mysql, в контейнер. Это не отличается от использования виртуальной машины, за исключением того, что в виртуальной машине также необходимо установить операционную систему. Таким образом, Docker имеет огромное преимущество в размере (часто несколько ГБ).
Когда вы запускаете одну подачу в контейнере Docker, вам не нужны все пакеты, которые поставляются с полной операционной системой. Вы просто устанавливаете то, что вам нужно для запуска вашего сервиса.
Dockerfile, который вы используете для создания вашего контейнера, точно определяет, что вы хотите установить в ваш контейнер. Вы можете добавить к нему все, что захотите, так же, как и пакеты на свой сервер или настольную систему.
При создании нового контейнера Docker также «повторно» использует существующие контейнеры, которые используют один и тот же базовый контейнер. Ваш первый контейнер может, например, занимать 300 МБ, но последующие контейнеры с такими же базовыми контейнерами могут использовать всего несколько МБ.
Если вы создадите две одинаковые или похожие виртуальные машины, они всегда будут полноразмерными.
В этой статье на сайте Docker объясняется, как создаются образы и контейнеры Docker .
По этой причине контейнеры Docker могут обойтись без полной операционной системы, см. Https://serverfault.com/q/755607/388193.