uz
KA
июня 23, 2025
Обновлено июня 23, 2025

Как запустить контейнер Docker Postgresql?

Linux PostgreSQL

При работе с различными службами часто возникал вопрос, о том что запущенные приложения могут влиять на работу друг друга, а для сервисов это особо критично. Так как они обеспечивают клиентов обработкой запросов, к примеру сервер базы данных, сервер мониторинга производительности и другие могут быть отключены соседними процессами так, как имеют одинаковые права.

Поэтому для обеспечения целостности, доступности и изолированной работы служб стали использовать технологию контейнеризации. В данном материале рассмотрим, установку базы данных PostgreSQL через контейнеры Docker.

Краткая сводка

Docker — это платформа, которая автоматизированно развертывает заранее заготовленные снимки файловой системы или же образы и позволяет использовать их в изолированных средах — контейнерах.

Сама виртуализация происходит с помощью ядра ОС, где создается полностью отдельная файловая, сетевая, процессорная среда, которая назначается новому процессу. А значит, что ограниченный процесс Docker с прикрепленными, новыми для него средами будет выполнять все необходимые задачи сервиса.

Установка и настройка

Начнем с зависимостей и ПО необходимого для работы, если у вас не предустановлен Docker, то выполните команду:

sudo apt install docker
Установка
Скриншот № 1 — Установка

После чего можем запустить dockerd демон и проверить его работоспособность командами, после чего найти нужный образ в репозитории:

systemctl start docker && systemctl status docker
sudo docker search postgres
Поиск
Скриншот № 2 — Поиск

Обратите внимание, на то что необходимо установить официальный образ контейнера, справа для этого есть пометка. Скачаем найденный образ с сервером базы данных через команду:

docker pull postgres
Скачивание образа
Скриншот № 3 — Скачивание образа

Это позволит скачать с удаленного в локальный репозиторий, с которым в дальнейшем будет работать docker engine. Проверим наш образ в локальном репозитории командой:

docker ls image
Список образов
Скриншот № 4 — Список образов

Так как контейнер делит одно ядро ОС вместе с хостовой машиной, то некоторые функции изолированы не будут. К примеру, для создания процесса необходимы права с UID и GID, которые могут совпасть с пользователем хостовой ОС. Поэтому относитесь внимательно, к процессу монтирования папок с основной машины и создании пользователей.

docker run -d \
–name your-container-name \
–restart unless-stopped \
-e POSTGRES_USER=dbuser \
-e POSTGRES_PASSWORD=your-pass \
-e POSTGRES_DB=your-DB \
-p 5432:5432 \
-v name-of-volume:/var/lib/postgresql/data \
postgres && docker ps
Запуск контейнера
Скриншот № 5 — Запуск контейнера

В команду для запуска контейнера, мы передаем переменные среды:

  • POSTGRES_USER – имя пользователя БД/аккаунта для сервиса на ОС;
  • POSTGRES_PASSWORD – пароль для аккаунта;
  • POSTGRES_DB – имя базы данных;
  • -p – опция перенаправления портов host:container;
  • -v – виртуальный том для хранения данных сервиса.

Образ сам создаст пользователя и от его лица запустит сервис с созданной БД. Теперь контейнер или ограниченный процесс является отдельным/изолированным пространством, который принимает сетевые обращения на порте 5432. Соответственно, обратится к серверу можно через сетевое соединение с удаленного устройства, используя IP-адрес хостовой ОС и порт, который ранее был проброшен. Можно проверить его доступность командами:

netstat -tulnp
Доступность по порту
Скриншот № 6 — Доступность по порту

Или же воспользоваться подключением через docker exec, где запустим клиент psql в самом же контейнере:

docker exec -it name-of-container psql -u dbsuer -D DB
Подключение к БД
Скриншот № 7 — Подключение к БД

Отлично, подключение произошло! Теперь можем управлять сервером БД, который изолирован от основной среды ОС. Для того, чтобы удалить контейнер выполним команды:

docker stop name-of-container && docker remove name-of-container && docker image remove postgres && docker volume remove name-of-volume
Удаление контейнера
Скриншот № 8 — Удаление контейнера

После чего контейнер с образом и данными хранящимися для него будет удален. При необходимости или желании переустановить образ, команду docker volume remove name-of-volume можно не выполнять для сохранения созданных баз данных.

В данном материале мы рассмотрели пошаговый способ развертывания контейнерной среды с образом базы данных. Такой подход позволяет разграничить пространство между остальным ПО, что повышает целостность и защищает от коллизии разных зависимостей.

Оценка:
5 из 5
Аverage rating : 5
Оценок: 1
100029 Ташкент Улица Якка Чинар, дом 2/1
ООО «ИТГЛОБАЛКОМ ЛАБС»

Вам также может быть интересно...