Да, это для приложений, а не для данных. Вместо того, чтобы ставить приложения непосредственно в свою ОС, можно их ставить в их собственные ОС, работающие в контейнерах. И на hub.docker.com есть большое количество готовых образов с установленным софтом. Преимущества:
- контроль над версиями
- легко воспроизводимо
- упрощается установка и конфигурирование софта
- основная ОС не забивается хламом
Например,
- контейнер 1: бэкенд
- контейнер 2: postgresql
- контейнер 3: pgadmin
Можете для практики попробовать реализовать такую конфигурацию. Для усложнения можно добавить фронтенд:
- контейнер 4: дев-сервер фронтенда
- контейнер 5: nginx, за которым работают бэкенд и фронтенд, чтобы не было ошибок CORS.
Контейнеры общаются друг с другом по внутридокерной сети. Поэтому, например, для postgresql не нужно конфигурировать порт. Он может использовать порт по умолчанию, потому что это не порт компьютера-хоста, а порт контейнера.