基于docker快速启动postgreSQL

概要

如何快速的在本机启动postgreSQL?

技术细节

1. 准备宿主机存储路径
mkdir -p /data1/postgresql12
chown -R 1001:1001 /data1/postgresql12

bitnami 提供的postgresql镜像中,有一个postgres用户要在该创建data目录,需要给一下权限
进入镜像:cat /etc/passwd
postgres: x:1000:1000::/home/postgres:/bin/sh
避免下面的报错
postgresql 06:39:19.64 WARN ==> Lack of permissions on data directory!
chmod: changing permissions of ‘/bitnami/postgresql/data’: Operation not permitt

2. docker 启动脚本
docker run -d --restart=always --name postgres -v /data1/postgresql12:/bitnami/postgresql -e POSTGRES_PASSWORD=Aa@123  -p 5000:5432 postgresql:12.8.0
-d :守护进程,后台运行该容器
--restart=always :开机自启动
--name postgres:容器的名称
-v :目录映射,容器目录挂载到宿主机目录,格式: <宿主机目录>:<容器目录>
-e :设置启动环境变量 
-p :启动的端口号, 宿主机端口:容器内服务的端口

访问地址:服务器IP:5000 (端口可以根据自己的需要修改)
账号/密码:postgres/Aa@123

3. docker 相关的命令
# 在公共仓库中下载
docker pull bitnami/postgresql:12.8.0

# 查看镜像
docker images |grep postgresql

# 打tag推送到本地仓库
docker tag  postgresql:12.8.0 docker.公司域名.com/library/postgresql:12.8.0

# 推送到本地仓库
docker push docker.公司域名com/library/postgresql:12.8.0

# 镜像导出,在没有网络的情况下转移
docker save postgresql:12.8.0 > postgresql-12.8.0.tar

# 镜像加载
docker load < postgresql-12.8.0.tar

# 查询服务的ID
docker ps |grep postgresql 运行中的容器
docker ps  -a |grep postgresql  全部的容器
#根据id查 日志
docker logs -f f8911198f0d3 --tail=100

# 查看该镜像的元信息
docker inspect f8911198f0d3 

# 重启镜像服务
docker restart f8911198f0d3 

# 停止镜像服务
docker stop f8911198f0d3 

#启动镜像服务
docker stop f8911198f0d3 

#删除镜像服务
docker rm f8911198f0d3
#删除镜像
docker rmi postgresql:12.8.0

#进入容器
docker exec -it f8911198f0d3 bash
容器中的数据库目录
cd /bitnami/postgresql/data
宿主机中的的目录

4. PostgreSql 数据相关的命令
# 进入容器  
docker exec -it f8911198f0d3 bash
# 进入postgresql客户端
psql -h localhost -U postgres -p 5432

#查看所有数据库
\l 
# 创建数据库
create database 数据库名字(cp_user);

#进入某个数据库
\c 数据库名字(cp_user)

# 创建表
drop table if exists "public"."t_user";
create table "public"."t_user" (
  "id" int4 not null,
  "name" varchar(255) collate "pg_catalog"."default"
);
comment on column "public"."t_user"."id" is '编号';
comment on column "public"."t_user"."name" is '名称';
alter table "public"."t_user" add constraint "t_user_pkey" primary key ("id");

# 查看数据库中的表
\dt 表名 : user

# 插入数据
insert into "public"."t_user"("id", "name") values (1001, 'lisa');
insert into "public"."t_user"("id", "name") values (1002, 'jack');
 
#查看某个表的所有数据
select * from 表名 
select * from  t_user;  
如果表名是user,因user是保留此,查询需要 select *  from public.user;

# 修改某条数据
update "public"."t_user" set "name" = 'jack' where "id" = 1002;

# 删除某条数据
delete from t_user where id =1001
# 添加字段 
alter table t_user add age  varchar(32);

# 修改字段的注释
comment on column t_user.age is '年龄';

# 导出数据库
pg_dump -U 用户名 数据库名 > 导出文件名

# 导入数据库
psql -U 用户名 数据库名 < 导入文件名 :

#退出数据库

 \q  或 ctrl + z

# 查询特定模式下的所有表名
select tablename from pg_tables where schemaname = 'public'`

# 备份数据库。
使用命令`pg_dump -U 'username' -p 'port number' -d 'database' > 'dump file name'`
5. 扩展知识-用户组描述
用户账户的信息存放在/etc/passwd文件中;
超级用户root(0)
程序用户(1~499)
普通用户(500~65535)

用户名 密码 uid gid 用户说明 家目录 shell解释器
python : x : 1001 : 1001 : : /home /python : /bin/sh
 
  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 下载CentOS镜像 首先,我们需要下载CentOS的镜像文件。可以从官方网站下载,也可以从镜像站点下载。这里我们选择从镜像站点下载CentOS 7的镜像文件。 2. 安装Docker 安装Docker的步骤可以参考官方文档。这里不再赘述。 3. 创建Dockerfile文件 在本地机器上创建一个目录,用来存放Dockerfile和其他需要的文件。 ```bash mkdir postgresql cd postgresql ``` 然后,创建Dockerfile文件。 ```bash touch Dockerfile ``` 编辑Dockerfile文件,输入以下内容。 ```dockerfile # 基础镜像,使用centos 7 FROM centos:7 # 作者信息 MAINTAINER Your Name <your.email@example.com> # 安装postgresql RUN yum install -y postgresql-server postgresql-contrib # 初始化数据库 RUN postgresql-setup initdb # 启动postgresql服务 RUN systemctl start postgresql # 设置postgresql服务开机自启动 RUN systemctl enable postgresql # 开放postgresql服务端口 EXPOSE 5432 # 启动命令 CMD ["/usr/bin/postgres", "-D", "/var/lib/pgsql/data", "-c", "config_file=/var/lib/pgsql/data/postgresql.conf"] ``` Dockerfile的解释如下: - 第一行指定基础镜像为centos 7。 - 第二行指定作者信息。 - 第三行安装postgresql。 - 第四行初始化数据库。 - 第五行启动postgresql服务。 - 第六行设置postgresql服务开机自启动。 - 第七行开放postgresql服务端口。 - 第八行指定启动命令。 4. 构建镜像 在postgresql目录下执行以下命令,构建postgresql镜像。 ```bash docker build -t postgresql:latest . ``` 其中,postgresql:latest是镜像的名称和标签。 5. 保存镜像 在本地机器上保存postgresql镜像。 ```bash docker save -o postgresql.tar postgresql:latest ``` 6. 导入镜像 将postgresql.tar文件拷贝到离线机器上,执行以下命令,导入postgresql镜像。 ```bash docker load -i postgresql.tar ``` 7. 运行容器 在离线机器上运行postgresql容器。 ```bash docker run -d --name postgresql -p 5432:5432 postgresql:latest ``` 其中,-d表示后台运行容器,--name指定容器名称,-p指定端口映射。 至此,我们就成功地在离线机器上制作了postgresql镜像,并且成功地运行了postgresql容器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值