# 在 Docker 容器中运行数据库

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com/zh-cn/help/idea/llms.txt).

> **TL;DR**
> 必需插件：   Docker
>
>
>
> 必需软件：   Docker Desktop

您可以使用 Docker 在容器中运行数据库，就像它是远程服务器一样，并测试您的应用程序如何与其交互。

在本教程中，将介绍如何运行带有 PostgreSQL 服务器的 Docker 容器，并使用 IntelliJ IDEA 连接到该服务器。

> **Note:**
> 在开始之前，请 [安装并运行 Docker](docker.html#install_docker)、 [启用 Docker 插件](docker.html#enable_docker_plugin)，并 [在 IntelliJ IDEA 中连接到 Docker 守护进程](docker.html#connect_to_docker)。

Procedure: 获取 PostgreSQL 服务器镜像

1. 在   服务  工具窗口中，展开您的 Docker 连接并选择   镜像  节点。

2. 在   要拉取的镜像  字段中，开始输入  `postgres` 并选择所需的镜像存储库。 例如，选择  `postgres`  来提取默认  `postgres:latest`  图像。

![获取带有 PostgreSQL 的 Docker 镜像](https://resources.jetbrains.com/help/img/idea/2026.3/docker_postgres_pull.png)

3. 按 `Ctrl+Enter` (Windows), `⌘ ⏎` (macOS), `⌘ ⏎` (IntelliJ IDEA Classic (macOS)), `⌘ ⏎` (macOS System Shortcuts), `Ctrl+Enter` (XWin), `Ctrl+Enter` (GNOME), `Ctrl+Enter` (KDE), `Ctrl+Enter` (Emacs), `Ctrl+Enter` (Sublime Text), `⌘ ⏎` (Sublime Text (macOS)), `Ctrl+Enter` (Visual Studio), `⌘ ⏎` (Visual Studio (macOS)), `Ctrl+Enter` (NetBeans), `Ctrl+Enter` (Eclipse), `⌘ ⏎` (Eclipse (macOS)) 并等待 Docker 拉取镜像。

![Docker 镜像已拉取](https://resources.jetbrains.com/help/img/idea/2026.3/docker_postgres_pulled.png)

Procedure: 从 PostgreSQL 服务器镜像运行容器

1. 展开   镜像   节点，选择 PostgreSQL 服务器镜像，然后点击 ![“创建容器”按钮](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.general.add.svg)   创建容器  。

![选择 PostgreSQL 映像并点击创建容器](https://resources.jetbrains.com/help/img/idea/2026.3/docker_postgres_create_container.png)

2. 在   创建 Docker 配置   对话框中，点击   修改选项   并选择   随机发布所有已暴露端口  ，以将所有暴露的容器端口发布到主机接口。

> **Tip:**
> 本教程假定本地计算机足够安全且不包含敏感数据。 但是，要获得更安全的配置，定义特定的端口绑定很重要。 随机发布端口仅用于开发和测试目的，不应在生产环境中使用。

3. 点击   修改选项   并选择   环境变量  。 在显示的   环境变量   字段中，可以为 PostgreSQL 身份验证配置环境变量。

![Docker postgresql modify options](https://resources.jetbrains.com/help/img/idea/2026.3/docker_postgresql_modify_options.png)

4. 点击 ![浏览按钮](https://resources.jetbrains.com/help/img/idea/2026.3/app.actions.menu-open.svg)   浏览  。 在打开的   环境变量   对话框中，点击 !["添加"按钮](https://resources.jetbrains.com/help/img/idea/2026.3/app-client.expui.general.add.svg)   添加  ，并添加值为  `信任`  的  `POSTGRES_HOST_AUTH_METHOD`  变量。

![环境变量对话框](https://resources.jetbrains.com/help/img/idea/2026.3/docker_postgresql_environment_variables.png)

> **Note:**
> 本教程使用 [信任身份验证](https://www.postgresql.org/docs/current/auth-trust.html)。 请注意，这将使任何能够连接到 PostgreSQL 服务器的人都能够使用他们选择的任何用户名访问数据库。
>
>
>
> 有关身份验证的更多信息，请参阅 [官方 PostgreSQL Docker Hub 镜像页面](https://hub.docker.com/_/postgres)。

5. 在   名称   和   容器名称   字段中，为配置(例如  `PostgreSQL Container` )和容器(例如  `postgresql` )指定自定义名称。

![创建 Docker 配置对话框](https://resources.jetbrains.com/help/img/idea/2026.3/docker_postgresql_create_configuration.png)

6. 应用更改并点击   运行  。

IntelliJ IDEA 会创建并启动新的 Docker 容器。 将显示在   服务   工具窗口中   容器   节点下。

![正在运行创建的 Docker 容器](https://resources.jetbrains.com/help/img/idea/2026.3/docker_postgresql_running_container.png)

Procedure: 连接到 PostgreSQL 服务器

Docker 会自动将容器内的默认 PostgreSQL 服务器端口 5432 映射到  临时端口范围 （通常从 32768 到 61000）内的主机端口。 本教程以端口 55000 为例。

> **Tip:**
> 要检查实际映射，请在   服务   工具窗口中   容器   节点下右键点击 PostgreSQL 容器，选择   检查  ，然后在   检查   输出中找到  `HostPort`  字段的值。
>
> ![在服务工具窗口中检查端口映射](https://resources.jetbrains.com/help/img/idea/2026.3/docker_postgresql_container_hostport.png)

1. 打开   数据库  工具窗口（  `视图 | 工具窗口 |   数据库` ）。

2. 点击 ![新建按钮](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.general.add.svg)   新建   并选择  `数据源 | PostgreSQL` 。

3. 将主机名设置为  `本地主机` ，端口号设置为  `55000` (或其映射到的任何主机端口)，默认数据库和用户设置为  `postgres` 。 我们使用了  `信任`  身份验证来运行 PostgreSQL 服务器，因此不需要密码。

4. 如有必要， [下载驱动程序](jdbc-drivers.html)并测试连接。

![数据源和驱动程序对话框](https://resources.jetbrains.com/help/img/idea/2026.3/docker_new_database.png)

5. 点击   OK   以将 PostgreSQL 服务器添加为数据源。

创建的数据源将显示在   数据库   工具窗口中。 现在可以展开连接树，以查看在 Docker 中运行的 PostgreSQL 服务器的数据库对象。 有关 PostgreSQL 数据库连接过程和可用选项的更多信息，请参阅 [连接到 PostgreSQL 数据库](postgresql.html#connect-to-postgresql-database)。

## 总结

通过本教程，您已经学会了如何：

* 拉取和管理 Docker 镜像

* 从 DBMS(如 PostgreSQL)镜像配置并运行容器

* 在 IntelliJ IDEA 和容器内运行的数据库之间建立连接

## See also

### 过程

[Docker 镜像](docker-images.html) [Docker 容器](docker-containers.html)

### 参考

[数据库工具和 SQL](relational-databases.html)

