Докер-контейнери використовуються для ізоляції тієї служби, яку ви запускаєте в ній, від решти системи. У цьому сенсі вони не відрізняються від VM (віртуальної машини).
Ви повинні встановити потрібну вам послугу, наприклад, mysql, в контейнер. Це не відрізняється від використання VM, за винятком того, що в VM вам також доведеться встановити операційну систему. Тож у Докера є величезна вигода (часто це кілька ГБ).
Під час запуску однієї подачі в контейнер Docker вам не потрібні всі пакети, з якими постачається повноцінна операційна система. Ви просто встановите те, що потрібно для запуску вашої послуги.
Dockerfile, який ви використовуєте для створення свого контейнера, вказує саме те, що ви хочете встановити у своєму контейнері. Ви можете додавати до нього все, що завгодно, так само, як ви додавали б пакунки на свій сервер чи настільну систему.
Під час створення нового контейнера Docker також «повторно використовує» існуючі контейнери, які використовують той самий базовий контейнер. Наприклад, ваш перший контейнер може займати 300 Мб, але наступні контейнери з тими ж базовими контейнерами можуть використовувати лише декілька МБ.
Якщо ви створите два однакових або подібних VM, вони завжди будуть повнорозмірними.
Ця стаття на сайті Docker пояснює, як будуються зображення та контейнери докера.
З тієї причини, що Docker-контейнери можуть обійтися без повної операційної системи, див. Https://serverfault.com/q/755607/388193