Если вы ищете легкий способ установить и запустить базу данных PostgreSQL, то использование Docker — отличный выбор.
Мы ранее уже устанавливали Docker, если у вас он еще не установлен, вам помогут наши статьи по установке на Windows и Linux соответственно.
Что такое Docker и PostgreSQL?
Docker — это платформа для создания, запуска и управления контейнерами. Контейнеры — это легкие и изолированные окружения, в которых можно запускать приложения так, как будто они работают на отдельной машине. Это удобно, потому что контейнеры легко переносить, настраивать и запускать на любой системе.
PostgreSQL — это мощная и популярная система управления базами данных (СУБД). Она используется во многих проектах для хранения и обработки данных. PostgreSQL известна своей надежностью, расширяемостью и большим количеством функций.
Почему запускать PostgreSQL в Docker удобно?
- Облегченная установка — не нужно вручную настраивать окружение и устанавливать базу данных.
- Изоляция — контейнер работает независимо от остальной системы.
- Легкое восстановление и перенос — все настройки и данные можно легко скопировать или восстановить.
- Быстрый запуск — запуск и остановка базы данных занимает считанные секунды.
Пошаговая инструкция: как запустить PostgreSQL в Docker
Чтобы запустить PostgreSQL нам нужно скачать его образ, создать и запустить из него контейнер:
1. Загрузка образа PostgreSQL
Docker использует образы — шаблоны для создания контейнеров. Как найти нужный образ мы рассматривали в отдельной статье. Для PostgreSQL официальный образ — postgres.
Выполним команду docker pull:
[root@waky ~]# docker pull postgres
Using default tag: latest
latest: Pulling from library/postgres
0e4bc2bd6656: Pull complete
1a50b0db5bde: Pull complete
02119e61144b: Pull complete
3221278be714: Pull complete
fed2b3560f55: Pull complete
c6aa08a3c711: Pull complete
24fdbfae116d: Pull complete
cc81fb737f8b: Pull complete
889840ade1ab: Pull complete
d75755489c86: Pull complete
cbf222e9e3b9: Pull complete
5a19de04632f: Pull complete
57871086ddd6: Pull complete
Digest: sha256:5ec39c188013123927f30a006987c6b0e20f3ef2b54b140dfa96dac6844d883f
Status: Downloaded newer image for postgres:latest
docker.io/library/postgres:latest
[root@waky ~]#
Так как мы не указали конкретную версию образа, Docker скачал самую свежую стабильную версию PostgreSQL с Docker Hub.
2. Запуск контейнера PostgreSQL
Теперь создадим контейнер и запустим базу данных командой docker run:
[root@waky ~]# docker run -d --name my_postgres -e POSTGRES_PASSWORD=your_password -p 5432:5432 -v ./postgresql_files:/var/lib/pgsql/ postgres
703958b47ea7899887342aacca5a06a732fd94c7762e10b2ef3d39bd0b6060b5
[root@waky ~]#
В качестве вывода мы получили ID контейнера. Его можно использовать для обращения к контейнеру, наряду с именем.
Использованные параметры:
-d — запуск в фоновом режиме
–name my_postgres — имя контейнера (можете выбрать любое)
-e POSTGRES_PASSWORD=your_password — задаем пароль для пользователя postgres (замените your_password на свой пароль)
-p 5432:5432 — проброс портов, чтобы подключаться к базе через этот порт
-v ./postgresql_files: /var/lib/pgsql/ postgres – монтирование директории контейнера с файлами базы в локальную директорию (./postgresql_files – заранее создайте пустую директорию)
postgres — имя образа, из которого создаем контейнер
Теперь у нас работает контейнер с PostgreSQL внутри. Можем увидеть его выведя список работающих контейнеров с помощью docker ps:
[root@waky ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
703958b47ea7 postgres "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:5432->5432/tcp, [::]:5432->5432/tcp my_postgres
[root@waky ~]#
3. Проверка работы
Подключение к базе данных можно сделать через любой (установленный у вас) клиент PostgreSQL, например, psql .
Для подключения нужно указать хост(-h), порт(-p) и имя пользователя(-U), которые будут использованы для подключения:
[root@waky ~]# psql -h localhost -p 5432 -U postgres
Пароль пользователя postgres:
psql (13.20, сервер 18.1 (Debian 18.1-1.pgdg13+2))
postgres=# exit
[root@waky ~]#
После ввода пароля, который мы задали при запуске контейнера, мы попадаем в консоль PostgreSQL. База данных готова к работе.
Как управлять контейнером PostgreSQL
Чтобы остановить контейнер используйте docker stop:
[root@waky ~]# docker stop my_postgres
my_postgres
[root@waky ~]#
Чтобы запустить заново docker start:
[root@waky ~]# docker start my_postgres
my_postgres
[root@waky ~]#
Удалить контейнер можно с помощью docker rm, однако нельзя удалить работающий контейнер. Нужно либо его сначала остановить либо использовать дополнительный параметр -f:
[root@waky ~]# docker rm my_postgres
Error response from daemon: cannot remove container "my_postgres": container is running: stop the container before removing or force remove
[root@waky ~]# docker rm -f my_postgres
my_postgres
[root@waky ~]#
Если вы хотите узнать больше о работе с контейнерами, у нас этому посвящена отдельная статья.
Заключение
Мы буквально за пару минут получили рабочую базу данных PostgreSQL. Главное преимущество в том, что этот способ работает для любого окружения, лишь бы там был Docker.
Это быстро, удобно и безопасно. Следуя простым шагам, вы легко создадите свое окружение для разработки, тестирования или обучения.