Docker安装Postgresql

news/2024/7/9 23:15:45 标签: docker, postgresql

测试环境:

Centos7.x + docker1.13.1 + postgres12

本文使用的是在镜像仓库直接pull的方式,非Dockfile的方式。

Postgresql的Dockerfile参考:https://github.com/docker-library/postgres/blob/master/12/alpine/Dockerfile

常用命令

docker命令大全:https://www.runoob.com/docker/docker-command-manual.html

请注意区分“镜像”和“容器”的。先创建镜像,然后通过镜像创建容器,一个镜像可以有多个容器。

镜像常用命令

命令

作用

docker image list

查询镜像列表

docker rmi -f 镜像ID

通过镜像ID删除

容器常用命令

docker run

容器运行

docker start/stop/restart

启动/停止/重启

docker rm 容器ID

删除容器

docker ps

容器查询,-a -q

docker exec -it 容器ID /bin/sh

进入容器命令行

docker volume create xxx

创建容器共享数据卷

docker volume inspect xxx

容器共享数据卷落盘

1.查询docker镜像

# docker search postgres

2.下载docker镜像

# docker pull postgres:12.7

下载后,镜像查询,# docker image list

3.创建本地卷

数据卷可以再容器之间共享

docker volume create PGDATA
docker volume inspect PGDATA
    {
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/PGDATA/_data",
        "Name": "PGDATA",
        "Options": {},
        "Scope": "local"
    }
]

Mountpoint属性路径就是将来容器的data目录。

4.运行容器

docker run --name postgres12 -e POSTGRES_PASSWORD=postgres -p 5433:5432 -v PGDATA:/var/lib/postgresql/data -d postgres:12.7
  1. run:创建并运行一个容器

  1. --name:容器名称

  1. -e POSTGRES_PASSWORD:数据库密码

  1. -p:映射端口。前面端口是对外端口,后面端口是容器内使用端口。

  1. -v:PGDATA挂载到容器的/var/lib/postgresql/data (因为pg的Dockerfile声明的目录)

  1. -d postgres:12.7:使用image镜像的名称

返回一串字符,就是启动的容器ID。

容器ID:b8e40f13e2f3
镜像名称:postgres:12.7
对外暴露端口:5433
容器名称:postgres12
pg数据库默认密码:postgres

5.查看日志

# docker logs b8e40f13e2f3

[root@sougou opt]# docker logs b8e40f13e2f3
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
...
2023-01-31 07:29:59.706 UTC [1] LOG:  starting PostgreSQL 12.7 (Debian 12.7-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
2023-01-31 07:29:59.707 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2023-01-31 07:29:59.707 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2023-01-31 07:29:59.713 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2023-01-31 07:29:59.730 UTC [63] LOG:  database system was shut down at 2023-01-31 07:29:59 UTC
2023-01-31 07:29:59.734 UTC [1] LOG:  database system is ready to accept connections

6.进入容器使用psql

# docker exec -it b8e40f13e2f3 /bin/sh

root@sougou opt]# docker exec -it b8e40f13e2f3 /bin/sh
# psql -U postgres -p 5432
psql (12.7 (Debian 12.7-1.pgdg100+1))
Type "help" for help.

postgres=# select version();
                                                     version                                                      
------------------------------------------------------------------------------------------------------------------
 PostgreSQL 12.7 (Debian 12.7-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
(1 row)
# exit

7.使用数据库管理工具连接

到此结束。


http://www.niftyadmin.cn/n/31434.html

相关文章

【Python学习教程】数据结构与算法

前言 python内置的数据结构包括:列表(list)、集合(set)、字典(dictionary),一般情况下我们可以直接使用这些数据结构,但通常我们还需要考虑比如搜索、排序、排列以及赛选…

HTB_Inclued_TFTP文件包含与LXD提权

文章目录信息收集TFTPLXD 提权环境安装报错信息收集 开放80端口,url为http://ip:port?filehome.php 测试文件包含,本地包含成功,远程失败,尝试上传后门木马反弹shell 根据图示,网站目录为var/www,其他功…

ElasticSearch从入门到出门【上】

文章目录初识elasticsearch了解ESelasticsearch的作用ELK技术栈elasticsearch和lucene为什么不是其他搜索技术?倒排索引正向索引倒排索引正向和倒排ES的一些概念文档和字段索引和映射mysql与elasticsearch安装elasticsearch部署单点es部署kibana安装IK分词器在线安装…

VS搭载Sqlite3用法详解

本篇采用动态库静态调用方式,动态库链接如下https://download.csdn.net/download/u014272404/87406250静态调用方式:1.将Database.dll sqlite3.dll 添加到执行目录中2.在stdafx.h中包含(工程目录下)#include "Include/DataBa…

MySQL优化方案

一、MySQL 的优化方案有哪些?MySQL 数据库常见的优化手段分为三个层面:SQL 和索引优化、数据库结构优化、系统硬件优化等,每个大的方向中又包含多个小的优化点。1.SQL 和索引优化通过优化 SQL 语句以及索引来提高 MySQL 数据库的运行效率① 使…

springBean的作用域

前言:最近在进行springBean的作用域学习,并且学习了对应的例子。这里进行一下总结 一:Bean的作用域基础概念 如果想学习SpringBean的生命周期,那么就必须要学习Bean的作用域。因为不同的作用域的bean的生命周期不同 1:singleto…

优秀的代码最终选择if else,还是switch case

今天我们不讨论哪个写法读起来更优秀,不讨论对于性能而言哪个更完美,也不讨论哪种情况下对于判断语句是常量还是变量的选择,而是单纯从最简单的角度来看一下,为什么很多优秀的项目优秀的代码,最终选择了if else语句&am…

暗月ACK靶场 WP

环境搭建 https://mp.weixin.qq.com/s/VB4elHdrHNCmPDP_ktcLRg https://www.bilibili.com/video/BV1264y187St?spm_id_from333.1007.top_right_bar_window_history.content.click 按照文章拓扑根据实际情况搭建好,web2的其中一个网卡需要自己调一下ip 1、把 12s…