Docker
Я буду объяснять максимально упрощённо. Сложные варианты вы можете почитать на официальном сайте или на хабре.
Докер - это такой проигрыватель для контейнеров. Контейнеры создаются при запуске образов. Самое главное, что надо понять для Linux хоста, контейнеры исполняются вместе с остальными процессами системы, виртуализируется только файловая система и сетевая.
Также существует LXC, если вам это интересно, идите и читайте, здесь будет про докер.
Контейнер
Контейнер - это некий кусок программного обеспечения, такой пакет с кодом и его зависимостями, который позволяет максимально просто доставить приложение в нужное место и запустить его там.
Контейнеры создаются из образов.
Образ
Образ - это небольшой (тут спорно), обособленный, исполняемый пакет программного обеспечения, который включает в себя всё необходимое для запуска распространяемого приложения: код, рантайм, системные инструменты, библиотеки и настройки.
Основы
Пока разберёмся в основах. Зачем вообще нужен Docker?
Если вы поддерживали проект больше года, например, обычный Django сайт, то вы могли заметить необходимость обновлять то одну, то другую библиотеку. Иногда разработка проекта останавливалась из-за отсутствия ресурсов и хотя он не терял свою полезность, приходилось тратить всё больше и больше времени на его поддержку.
Так вот, все эти мучения можно достаточно легко прекратить. Нет, не удалением проекта )
Надо упаковать проект в докер!
Но сначала рассмотрим удобства, которые может дать докер.
У вас на ноутбуке установлен MySQL и вы разрабатываете приложения с его использованием, но внезапно к вам прилетел интересный проект, который требует использования PostgreSQL, да ещё и с GIS расширением.
Можно стать на время администратором и поставить себе на машину PostgreSQL, повозиться с его настройкой, залезть по локти в PostGIS. Можно выпросить у девопса доступ к внешнему PostgreSQL, это если у вас есть девопс и вы постоянно онлайн.
Но лучше просто поставить себе на ноутбук Docker и запустить в нём контейнер с настроенным PostgreSQL/GIS и просто заняться своей работой.
И такое можно делать с любым софтом, на DockerHub есть всё, что только можно придумать: ElasticSearch, MySQL, MongoDB и прочий полезный софт.