如何在使用 PostgreSQL (pgsql) 容器时将数据从宿主机挂载到容器中?
时间: 2024-11-06 22:19:24 浏览: 14
在使用 PostgreSQL (pgsql) 容器时,如果你想要将宿主机的数据目录挂载到容器内供数据库使用,可以按照以下步骤操作:
1. **创建数据卷**:
- 使用 `docker volume create` 创建一个新的数据卷,例如:`docker volume create pgdata`
2. **启动 PostgreSQL 容器**:
在启动命令中添加 `-v` 参数,指定数据卷以及挂载点。例如:
```
docker run -d --name my_postgres -p 5432:5432 -v pgdata:/var/lib/postgresql/data postgres:latest
```
这里,`pgdata:/var/lib/postgresql/data` 表示宿主机的 `/path/to/pgdata` 目录会被挂载到容器的 `/var/lib/postgresql/data`。
3. **确保权限**:
数据卷默认只有读写权限给用户 `postgres`。如果需要其他用户也能访问,可以在启动时设置运行用户(如 `USER` 或者通过环境变量 `POSTGRES_USER` 和 `POSTGRES_PASSWORD`),或者调整卷的权限。
4. **迁移已有数据**:
如果已经有一个 PostgreSQL 数据库在宿主机上,并希望在容器中继续使用,可以先备份数据到宿主机的指定目录,然后在启动容器时挂载这个目录。
5. **监控和管理**:
使用 `docker exec` 来管理和查询容器内的数据库,或者配置 Docker Compose 等工具自动化容器管理。
阅读全文