Docker+PostgreSQL数据库

进入docker hub,先搜索postgres,会出来一系列官方镜像,再点积Tags,搜索你的目标版本,例如我使用了16.4-alpine,这是个精简版,体积比较小

1.拉镜像

复制代码
docker pull postgres:16.4-alpine

2.启动docker

bash 复制代码
docker run --name moment_db -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=.root -d postgres:16.4-alpine

--name moment_db 启动的容器名称

-p 端口映射,宿主机5432映射到docker5432port

-e初始化环境参数,这里初始了用户名和密码

-d 指定docker的镜像名称

3.检测启动

bash 复制代码
docker container ls

或者

nmap 127.0.0.1

两种方法都行,namp需要安装下,windows系统可以在wsl子系统里安装运行。如下图。5432端口已经被打开使用

4.启动和关闭这个docker可以使用

bash 复制代码
docker stop moment_db
docker start moment_db

5.进入docker容器内

bash 复制代码
docker exec -it moment_db /bin/bash

数据目录在 /var/lib/postgresql/data下

接下来做数据库文件永久化保存,避免容器删除带来的数据损失

首先为docker建立专用卷

bash 复制代码
docker volume create --name v_moment_db_data

查看卷,第一个是在容器创建的时候默认卷,第二个是新建专用卷

6.查看卷的信息

bash 复制代码
docker volume inspect v_moment_db_data

"Mountpoint": "/var/lib/docker/volumes/v_test/_data", 就是宿主机的数据同步位置,这里是因为win下面使用了wsl2,所以自动关联到wsl2目录下。

7.关闭并删除刚刚的容器,重新启动一个容器并绑定卷,指令:

bash 复制代码
docker run --name moment_db -v v_moment_db_data:/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=.root -d postgres:16.4-alpine

8.使用以下指令观察容器结果:

bash 复制代码
docker inspect moment_db

Mounts:部分,可以看Source部分是创建的卷,这个是由docker volume指令创建的,位置在宿主机是固定的,不可更改的,它已经绑定到了docker容器内的"Destination"的路径上

9.也可以直接绑定固定位置不使用官方的create volume

复制代码
docker run --name moment_db -v /home/server/SqlData/MomentDB:/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=.root -d postgres:16.4-alpine
相关推荐
m0_684501983 分钟前
C#怎么使用LINQ Contains包含判断 C#如何用Contains实现类似SQL IN查询的集合包含判断【语法】
jvm·数据库·python
2301_7641505620 分钟前
c++如何读取和解析带BOM头的UTF-8与UTF-16文本流【详解】
jvm·数据库·python
qq_4240985624 分钟前
HTML函数开发用窄边框笔记本有优势吗_便携与性能权衡【指南】
jvm·数据库·python
Wyz2012102427 分钟前
CSS如何实现导航栏下划线随鼠标移动_利用-hover伪类与过渡动画控制
jvm·数据库·python
2201_7610405927 分钟前
SQL如何统计每个用户的首次行为时间_MIN聚合与分组
jvm·数据库·python
qq_1898070333 分钟前
mysql如何实现定时清理缓存数据_利用event scheduler执行
jvm·数据库·python
Polar__Star35 分钟前
golang如何实现低功耗设备唤醒机制_golang低功耗设备唤醒机制实现教程
jvm·数据库·python
a95114164237 分钟前
CSS怎么在flex布局中实现项目均分间距_设置justify-content space-evenly
jvm·数据库·python
2201_7610405943 分钟前
Golang如何做灰度发布_Golang灰度发布教程【实战】
jvm·数据库·python
小梦爱安全1 小时前
SQL Server(Linux)安装
数据库·microsoft·sqlserver