Windows使用docker安装PostgreSql

本文详细介绍如何通过Docker快速部署PostgreSQL数据库。包括安装指定版本的PostgreSQL镜像、设置密码、映射端口及数据目录等步骤,并提供两种安装方式供选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker安装PostgreSql

1.先安装docker,可以参考文章:windows 安装doecker
2.Win + R 然后输入cmd,打开控制台
在这里插入图片描述
在这里插入图片描述
3.安装并运行,

docker run --name postgres -e POSTGRES_PASSWORD=postgres -e TZ=PRC -p 5432:5432 -v /data/docker/pg/data:/var/lib/postgresql/data -d postgres:12

在这里插入图片描述

使用此命令会先检查是否安装过,如果没有安装过,会先安装,然后在运行
网络原因可能会导致安装失败。重新输入命令就好

4.等待执行完成
在这里插入图片描述

5.打开docker,查看Images
在这里插入图片描述

6。查看Containers / Apps
在这里插入图片描述
7.使用可视化工具测试
在这里插入图片描述

附:第二种安装方式
1.先执行安装指定版本

docker pull postgres:9.4

在这里插入图片描述
2.安装完成
在这里插入图片描述

3.运行

docker run --name postgres1 -e POSTGRES_PASSWORD=password -p 54321 :5432 -d postgres:9.4 

在这里插入图片描述

4.打开docker,查看Images
在这里插入图片描述
5.查看Containers / Apps
在这里插入图片描述

至此docker安装postgresql完成

<think>好的,我现在需要帮助用户在指定宿主机路径F:\postgreSql使用Docker安装PostgreSQL。首先,我得回忆一下Docker的基本命令和参数,特别是关于卷映射的部分。用户已经提供了两个引用,里面有不同的启动命令,我需要结合这些信息。 首先,用户提到的两个引用中的命令结构。引用[1]中的命令是: docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres 而引用[2]的命令更详细: docker run -it --name postgres --restart always -e POSTGRES_PASSWORD='123456' -e ALLOW_IP_RANGE=0.0.0.0/0 -v /home/postgres/data:/var/lib/postgresql -p 5432:5432 -d postgres 这里的关键部分是使用-v参数来映射宿主机目录到容器内的/var/lib/postgresql,这个目录是PostgreSQL默认存储数据的地方。用户需要将宿主机的路径改为F:\postgreSql,所以需要调整-v参数。 不过,注意到用户使用的是Windows系统,因为路径是F:\postgreSql,而DockerWindows下处理卷路径时需要注意路径的格式。在Windows使用Docker Desktop时,通常需要将路径转换为Linux风格的路径,或者使用绝对路径。例如,F盘可能需要挂载为/f/postgreSql,但实际中可能需要使用//f/postgreSql这样的格式,或者根据Docker的设置进行调整。不过,用户可能直接使用F:\postgreSql,但在Docker命令中可能需要转义或者使用正确的格式。 另外,用户可能需要确保该目录在Docker Desktop的文件共享设置中已经被勾选允许。因为Docker默认可能不共享所有驱动器,需要在设置中开启对F盘的共享权限。 然后,组合这些参数,构造正确的docker run命令。环境变量部分,用户可能需要设置POSTGRES_USER和POSTGRES_PASSWORD,如引用[1]和[2]中的示例。同时,可能需要暴露端口5432,使用-p 5432:5432。此外,引用[2]中还提到了--restart always和ALLOW_IP_RANGE,这些可能需要根据用户的需求决定是否包含。 现在,整合这些信息。最终的docker命令应该包含: - 映射宿主机F:\postgreSql到容器的/var/lib/postgresql/data(注意,可能需要使用/data还是其他目录?根据PostgreSQL的官方镜像文档,默认的数据目录是/var/lib/postgresql/data,所以正确的卷映射应该是宿主机的F:\postgreSql映射到容器的/var/lib/postgresql/data) 但是,在引用[2]中,他们映射到了/var/lib/postgresql,这可能是旧版本或不同的配置。需要确认正确的目录。查阅PostgreSQL Docker官方文档,正确的数据目录应该是/var/lib/postgresql/data,所以正确的卷参数应该是-v F:\postgreSql:/var/lib/postgresql/data。 不过,在Windows使用绝对路径时,可能需要使用斜杠而不是反斜杠,或者双反斜杠。例如,在Docker命令中,路径应该写成/F/postgreSql或者//f/postgreSql,或者保持原样但使用引号括起来。例如,在PowerShell中,可能需要写成"F:\postgreSql",或者在CMD中直接使用F:\postgreSql,但要注意转义问题。 假设用户使用的是PowerShell,正确的卷参数应该是 -v F:\postgreSql:/var/lib/postgresql/data。但需要确保Docker Desktop已经配置为可以访问F盘。 另外,用户可能需要设置密码和其他环境变量。例如,-e POSTGRES_PASSWORD=mysecretpassword。如果用户没有指定用户,默认用户是postgres,但可以添加POSTGRES_USER变量来设置。 综合以上,最终的docker run命令可能类似于: docker run --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v F:\postgreSql:/var/lib/postgresql/data -p 5432:5432 -d postgres 不过,需要验证路径是否正确。另外,注意在Windows使用Docker时,路径可能需要使用/mnt/f/postgreSql这样的格式,但如果是直接使用Windows的路径,可能需要调整Docker的设置。这里可能存在路径格式的问题,需要进一步确认。 例如,在Docker Desktop的Windows中,如果启用了WSL 2后端,处理卷挂载时可能需要将路径转换为Linux格式,但用户可能更习惯于使用Windows的路径格式。此时,正确的写法可能应该是: docker run --name postgres -e POSTGRES_PASSWORD=123456 -v /f/postgreSql:/var/lib/postgresql/data -p 5432:5432 -d postgres 或者使用双斜杠: docker run --name postgres -e POSTGRES_PASSWORD=123456 -v //f/postgreSql:/var/lib/postgresql/data -p 5432:5432 -d postgres 不过,这可能取决于Docker的具体配置。为了保险起见,建议用户检查Docker Desktop的文件共享设置,确保F盘已共享,并尝试使用绝对路径。或者,使用实际挂载点,例如在WSL中,F盘可能挂载到/mnt/f,因此路径应为/mnt/f/postgreSql。这可能让用户感到困惑,所以需要明确说明。 可能用户需要将宿主机的F:\postgreSql转换为Docker可识别的路径。因此,正确的命令可能应为: docker run --name postgres -e POSTGRES_PASSWORD=123456 -v "F:\postgreSql":/var/lib/postgresql/data -p 5432:5432 -d postgres 注意这里使用双引号包裹Windows路径,以避免空格或特殊字符的问题。另外,可能需要使用反斜杠转义,或者在PowerShell中使用特定的语法。 总结,步骤应该是: 1. 确保Docker Desktop已经启动,并且在设置中的Resources > File Sharing里添加了F盘。 2. 运行命令,正确映射卷路径。 此外,用户可能需要初始化数据库,所以需要确保卷路径正确,否则PostgreSQL可能无法启动。例如,如果宿主机目录为空,容器启动时会初始化数据库文件到该目录。如果目录已有数据,则会使用现有数据。 因此,正确的命令应该包含: -v F:\postgreSql:/var/lib/postgresql/data 而环境变量设置密码,如-e POSTGRES_PASSWORD=123456。 结合引用中的例子,用户可能需要添加--restart always策略,以便容器自动重启。所以最终的命令可能包括这些参数。 另外,端口映射-p 5432:5432是必要的,以便宿主机访问。 所以,最终的Docker命令可能是: docker run --name postgres --restart always -e POSTGRES_PASSWORD=123456 -v F:\postgreSql:/var/lib/postgresql/data -p 5432:5432 -d postgres 但需要注意路径的正确写法。在Windows命令提示符或PowerShell中,可能需要使用不同的方式处理路径中的反斜杠。例如,在PowerShell中,使用单引号或双引号包裹路径: -v 'F:\postgreSql':/var/lib/postgresql/data 或者在CMD中,直接使用反斜杠: -v F:\postgreSql:/var/lib/postgresql/data 但需要确保Docker Desktop允许共享该路径。 可能出现的问题包括权限问题,例如容器内的postgres用户无法写入宿主机的目录。这时可能需要调整宿主机的目录权限,或者确保Docker有权限访问该路径。 综上,给用户的步骤应该是: 1. 确保Docker Desktop设置中F盘已共享。 2. 运行命令,正确映射F:\postgreSql到容器的数据目录。 命令示例: docker run --name postgres -e POSTGRES_PASSWORD=123456 -v F:\postgreSql:/var/lib/postgresql/data -p 5432:5432 -d postgres 可能还需要添加其他选项,如--restart always,根据用户需求。 需要提醒用户注意路径的正确性,以及Docker的文件共享设置。</think>### 分步说明 1. **配置Docker文件共享权限** 打开Docker Desktop设置 → **Resources → File Sharing** → 添加宿主机的 `F:\postgreSql` 路径,确保Docker有权访问该目录[^2]。 2. **执行Docker命令** 在终端(PowerShell或CMD)中运行以下命令: ```bash docker run --name postgres \ --restart always \ -e POSTGRES_PASSWORD=123456 \ -v F:\postgreSql:/var/lib/postgresql/data \ -p 5432:5432 \ -d postgres ``` - **参数说明**: - `--name postgres`: 容器名称 - `--restart always`: 容器自动重启 - `-e POSTGRES_PASSWORD=123456`: 设置数据库密码(需自定义) - `-v F:\postgreSql:/var/lib/postgresql/data`: 将宿主机 `F:\postgreSql` 映射到容器数据目录 - `-p 5432:5432`: 暴露数据库默认端口 3. **验证容器状态** 运行 `docker ps` 查看容器是否正常运行。若状态为 `Up`,则安装成功。 --- ### 关键注意事项 1. **路径格式问题** Windows路径需直接使用原生格式(如 `F:\postgreSql`),Docker会自动转换。若路径含空格,需用双引号包裹(例如 `"F:\my data"`)。 2. **数据持久化原理** 通过 `-v` 参数将容器内的 `/var/lib/postgresql/data` 映射到宿主机目录,确保数据持久化[^1]。 3. **权限问题** 首次运行时,若宿主机目录为空,PostgreSQL会自动初始化数据文件。若目录已存在数据,容器会直接使用(需确保数据兼容性)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值