Постановка задачи 
Хочу поднять PostgreSQL на локальном компьютере (Manjaro + KDE) для учебных целей и управлять им через pgAdmin и psql .
Решение 
Мой выбор пал на Docker, поскольку он позволяет реализовать задуманное с наименьшими затратами времени и минимальным влиянием на остальную систему. А ещё потому что я не смог быстро поставить pgAdmin напрямую в Manjaro ¯\(ツ)/¯
В начале установите Docker, если он у вас ещё не установлен.
Мы будем поднимать два контейнера: один с PostgreSQL, другой — с pgAdmin. Объединим их при помощи docker compose. Создайте следующий файл в рабочей директории:
version: "3.8"
services:
postgres:
image: postgres:16.3-alpine
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
ports:
- "5432:5432"
volumes:
- postgres:/var/lib/postgresql/data
pgadmin:
image: dpage/pgadmin4:8.6
environment:
PGADMIN_DEFAULT_EMAIL: admin@pgadmin.com
PGADMIN_DEFAULT_PASSWORD: password
PGADMIN_LISTEN_PORT: 80
ports:
- "15432:80"
volumes:
- pgadmin:/var/lib/pgadmin
depends_on:
- postgres
volumes:
postgres:
pgadmin:Я пробрасываю наружу 5432 порт, потому что хочу работать с postgres-ом из хостовой ОС через psql.
Управление контейнерами 
Чтобы запустить контейнеры в фоне, выполните команду
docker compose up -dв директории с описанным выше docker-compose.yaml файлом.
👉 После того как контейнеры запустятся, на http://localhost:15432/ будет доступна веб-версия pgAdmin.
Данные для входа прописаны в docker-compose.yaml:
- Логин:
admin@pgadmin.com— полеPGADMIN_DEFAULT_EMAIL - Пароль:
password— полеPGADMIN_DEFAULT_PASSWORD
При необходимости их можно поменять.
После первого запуска нажмите “Add New Server”, чтобы подключиться к PostgreSQL.
- Host name/address:
postgres— название контейнера c postgres вdocker-compose.yaml - Username:
postgres— полеPOSTGRES_USER - Password:
postgres— полеPOSTGRES_PASSWORD
Profit 🎆. Пользуйтесь pgAdmin.
Чтобы остановить контейнеры, выполните команду
docker compose downПри этом данные и PostgreSQL и pgAdmin останутся и будут доступы при следующем запуске контейнера. Они хранятся в docker volume-ах, которые мы описали в docker-compose.yaml.
Данные pgAdmin 
В pgAdmin можно сохранять файлы: бэкапы, ER диаграммы баз. Проводник в GUI pgAdmin показывает, что они лежат в корне файловой системы. Не верьте ему! На самом деле они лежат в docker volume (очевидно), но не в его корне (уже менее очевидно, но факт).
Посмотреть файлы в контейнере:
- Заходим в контейнер:
docker exec -it <containerName> sh- Внутри docker-контейнера переходим в директорию пользователя
cd /var/lib/pgadmin/storage/admin_pgadmin.comadmin_pgadmin.com — email пользователя, в котором @ заменён на _
- Вот тут-то они и притаились. Можно взглянуть на содержимое директории через
ls -lah, просмотреть файлы при помощиlessи даже открыть их вvi!
Стянуть файлы из контейнера в хостовую ОС:
docker cp <containerId>:/file/path/within/container /host/path/targetИмя и Id контейнера можно узнать, взглянув на список запущенных контейнеров командой
docker ps💡Docker-контейнерами можно управлять при помощи утилиты lazydocker.
Бэкапы в pgAdmin 
Для того, чтобы файлы бэкапов имели человекочикаемый вид, их нужно создавать со следующими настройками:

❗ Впоследствии мне не удалось восстановить БД в pgAdmin через такой бэкап, в отличие от бэкапа с форматом Custom — они создаются по умолчанию.
psql 
Подключиться к контейнеру с postgres-ом можно командой:
psql -h localhost -p 5432 -U postgres -d dbnamedbname — имя БД, к которой подключаемся
Данные для входа прописаны в docker-compose.yaml:
- Логин:
postgres— полеPOSTGRES_USER - Пароль:
postgres— полеPOSTGRES_PASSWORD
При необходимости их можно поменять.
Бэкапы БД в SQL формате 
Создание бэкапа БД 
pg_dump -h HOST -p 5432 -U USER_NAME DABASE_NAME > backup.sqlНакатывание данных в БД из бэкапа 
- Удаляем существующую БД, если нужно
dropdb -h HOST -p 5432 -U USER_NAME -f "DABASE_NAME"- Создаём новую БД
psql -h HOST -p 5432 -U USER_NAME postgres -c "create database DABASE_NAME"- Накатываем из бэкапа
psql -h HOST -p 5432 -U USER_NAME -d DABASE_NAME < backup.sqlВ заключение 
🦁 Порекомендую интересующимся пройти “Интерактивный тренажер по SQL” на Stepik. Курс содержит теоретическую информацию по SQL и множество практических заданий с автоматической проверкой.