当前位置: 首页 > news >正文

Docker环境安装Postgresql数据库Posrgresql 15.6

宿主机是ubuntu 22.04版本

ubuntu宿主机上安装docker,参见官方文档https://docs.docker.com/engine/install/ubuntu/, docker-ce是社区版 docker-ee是企业版
1、检查Docker是否安装

root@ODS1SPGOFSDEV:~# docker
Command 'docker' not found, but can be installed with:
snap install docker         # version 24.0.5, or
apt  install docker.io      # version 24.0.5-0ubuntu1~22.04.1
apt  install podman-docker  # version 3.4.4+ds1-1ubuntu1.22.04.2
See 'snap info docker' for additional versions.
root@ODS1SPGOFSDEV:~#

2、查看Docker各个版本,也可以参见https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/

root@ODS1SPGOFSDEV:~# snap info docker
...
channels:latest/stable:    24.0.5   2024-02-01 (2915) 136MB -latest/candidate: 24.0.5   2024-02-01 (2915) 136MB -latest/beta:      24.0.5   2023-10-30 (2915) 136MB -latest/edge:      24.0.5   2024-01-26 (2920) 136MB -core18/stable:    20.10.17 2023-03-13 (2746) 146MB -core18/candidate: ↑core18/beta:      ↑core18/edge:      ↑
root@ODS1SPGOFSDEV:~#

3、设置 Docker的apt仓库

# Add Docker's official GPG key:
apt-get update
apt-get install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update

4、安装docker20版本

# List the available versions:
apt-cache madison docker-ce | awk '{ print $3 }'
# Select the desired version and install:
VERSION_STRING=5:20.10.24~3-0~ubuntu-jammy
apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
#Verify that the Docker Engine installation is successful by running the hello-world image.
docker run hello-world
docker rmi -f hello-world
#Verify that the Docker is enable to startup while OS Startup
systemctl is-enabled docker

Docker环境安装postgresql 15.6
步骤1:下载postgresql 15.6的docker镜像,首先看有没有postgresql的docker镜像,再看有没有postgresql 15.6的docker镜像,可以到https://hub.docker.com/_/postgres/tags页面查找

root@ODS1SPGOFSDEV:~# docker search postgresql --no-trunc --filter is-official=true
root@ODS1SPGOFSDEV:~# docker pull postgres:15.6

步骤2:查看postgresql 15.6的docker镜像是否下载到了本机

root@ODS1SPGOFSDEV:~# docker images

步骤3:查看postgresql 15.6的docker镜像信息,比如端口port和变量PGDATA的信息,比如查到"ExposedPorts": {“5432/tcp”: {}}和"PGDATA=/var/lib/postgresql/data"

root@ODS1SPGOFSDEV:~# docker inspect postgres:15.6

步骤4:使用postgresql 15.6的docker镜像运行docker,一些参数可能需要修改到本机的信息比如变量PGDATA的信息,运行命令可以参考https://hub.docker.com/_/postgres

root@ODS1SPGOFSDEV:~# docker run -d --name postgresql15.6 --restart=always -e POSTGRES_PASSWORD=Dai2013! -e PGDATA=/pgdata -p 5432:5432 -v /var/lib/docker/volumes/pg_wal/_data:/pgdata postgres:15.6

**备注1:**必须要加-p 5432:5432,前一个5432表示宿主机(本机)的端口,后一个5432表示容器内部的端口,一定要把容器内部的端口映射到宿主机上,否则只是容器内部通信,我们连宿主机就无法连上
不映射的情况下,看到结果如下。当然如果如果把-p 5432:5432改成的话–network=host,这样也行,不过就是宿主机和容器公共网络,也就不再需要做端口映射了

root@ODS1SPGOFSDEV:/# docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED       STATUS          PORTS      NAMES
6b1285cdf987   postgres:15.6   "docker-entrypoint.s…"   2 hours ago   Up 40 minutes   5432/tcp   postgresql15.6

映射的情况下,看到结果如下

root@ODS1SPGOFSDEV:/# docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED              STATUS              PORTS                                       NAMES
d3842f39b5f9   postgres:15.6   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:5432->5432/tcp, :::5432->5432/tcp   postgresql15.6

**备注2:**加上-v 来绑定宿主机和容器内部的目录,这个/pgdata就是自定义的docker里面的postgresql的PGDATA环境变量值,而没有使用docker里面默认的PGDATA变量值PGDATA=/var/lib/postgresql/data,这个/var/lib/docker/volumes/pg_wal/_data就是我宿主机(本机)挂载的卷,这样我在宿主机(本机)的目录/var/lib/docker/volumes/pg_wal/_data就是docker容器里面的目录/pgdata1,宿主机没有/pgdata1这个目录,容器里面也没有/var/lib/docker/volumes/pg_wal/_data这个目录,详情见下面的实验结果
如果宿主机目录是/pgdata/data,docker image中PGDATA变量是/var/lib/postgresql/data,我们只是想把宿主机目录/pgdata/data绑定到docker目录/var/lib/postgresql/data而不想更换docker image中PGDATA变量值/var/lib/postgresql/data的话,那么直接执行如下就行

root@ODS1SPGOFSDEV:~# docker run -d --name postgresql15.6 --restart=always -e POSTGRES_PASSWORD=Dai2013! -p 5432:5432 -v /pgdata/data:/var/lib/postgresql/data postgres:15.6

**备注3:**发现这个docker的postgresql的pg_hba.conf文件最后面有一行host all all all scram-sha-256这条信息,所以不再需要额外加host all all 0.0.0.0/0 md5这种信息,外部的程序还是可以连接postgresql不会报错connection failed: FATAL: no pg_hba.conf entry for host “IP Address”, user “XX”, database “postgres”, SSL off。

步骤5:查看刚刚运行的docker的日志
root@ODS1SPGOFSDEV:~# docker logs postgresql15.6
docker logs 后面可以是docker名称postgresql15.6(docker run -d --name postgresql15.6 …),也可以是docker id,但是不能是docker image名称postgres:15.6

docker run -v /var/lib/docker/volumes/pg_wal/_data:/pgdata1时,/var/lib/docker/volumes/pg_wal/_data表示宿主机的目录,/pgdata1表示容器里面的目录

root@ODS1SPGOFSDEV:/var/lib/docker/volumes/pg_wal/_data# docker exec -it 6b1285cdf987 /bin/bash
root@6b1285cdf987:/# df -h
Filesystem                          Size  Used Avail Use% Mounted on
overlay                              18G   13G  4.1G  76% /
tmpfs                                64M     0   64M   0% /dev
shm                                  64M  1.1M   63M   2% /dev/shm
/dev/mapper/pg_wal_vg-pg_wal         10G  145M  9.9G   2% /pgdata1
/dev/mapper/pg_syslog_vg-pg_syslog  5.0G   68M  5.0G   2% /etc/hosts
tmpfs                               7.8G     0  7.8G   0% /proc/acpi
tmpfs                               7.8G     0  7.8G   0% /proc/scsi
tmpfs                               7.8G     0  7.8G   0% /sys/firmware
root@6b1285cdf987:/#
root@6b1285cdf987:/# ls /pgdata1
base    pg_commit_ts  pg_hba.conf    pg_logical    pg_notify    pg_serial     pg_stat      pg_subtrans  pg_twophase  pg_wal   postgresql.auto.conf  postmaster.opts
global  pg_dynshmem   pg_ident.conf  pg_multixact  pg_replslot  pg_snapshots  pg_stat_tmp  pg_tblspc    PG_VERSION   pg_xact  postgresql.conf       postmaster.pid
root@6b1285cdf987:/#
root@6b1285cdf987:/# ls /var/lib/docker/volumes/pg_wal/_data
ls: cannot access '/var/lib/docker/volumes/pg_wal/_data': No such file or directory
root@6b1285cdf987:/#
root@6b1285cdf987:/# exit
exit
root@ODS1SPGOFSDEV:~# ll /pgdata1
ls: cannot access '/pgdata1': No such file or directory
root@ODS1SPGOFSDEV:~#
root@ODS1SPGOFSDEV:~# df -h
Filesystem                            Size  Used Avail Use% Mounted on
tmpfs                                 1.6G  1.7M  1.6G   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv      18G   13G  4.1G  76% /
tmpfs                                 7.8G     0  7.8G   0% /dev/shm
tmpfs                                 5.0M     0  5.0M   0% /run/lock
/dev/sda2                             2.0G  374M  1.5G  21% /boot
/dev/mapper/pg_syslog_vg-pg_syslog    5.0G   68M  5.0G   2% /var/lib/docker/containers
tmpfs                                 1.6G     0  1.6G   0% /run/user/0
/dev/mapper/pg_wal_vg-pg_wal           10G  143M  9.9G   2% /var/lib/docker/volumes/pg_wal/_data
root@ODS1SPGOFSDEV:~#
root@ODS1SPGOFSDEV:~# ls /var/lib/docker/volumes/pg_wal/_data
base    pg_commit_ts  pg_hba.conf    pg_logical    pg_notify    pg_serial     pg_stat      pg_subtrans  pg_twophase  pg_wal   postgresql.auto.conf  postmaster.opts
global  pg_dynshmem   pg_ident.conf  pg_multixact  pg_replslot  pg_snapshots  pg_stat_tmp  pg_tblspc    PG_VERSION   pg_xact  postgresql.conf       postmaster.pid

docker run --network=host是,PORTS一列没有信息,且docker exec -it dockerid /bin/bash进入容器时,不再像root@d3842f39b5f9这样显示容器名,而是直接变成了root@ODS1SPGOFSDEV:/#主机名,只不过~变成了/

root@ODS1SPGOFSDEV:~# docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED             STATUS             PORTS     NAMES
c1d3f8f35e27   postgres:15.6   "docker-entrypoint.s…"   About an hour ago   Up About an hour             postgresql15.6
root@ODS1SPGOFSDEV:~#
root@ODS1SPGOFSDEV:~# docker exec -it c1d3f8f35e27 /bin/bash
root@ODS1SPGOFSDEV:/#

相关文章:

Docker环境安装Postgresql数据库Posrgresql 15.6

宿主机是ubuntu 22.04版本 ubuntu宿主机上安装docker,参见官方文档https://docs.docker.com/engine/install/ubuntu/, docker-ce是社区版 docker-ee是企业版 1、检查Docker是否安装 rootODS1SPGOFSDEV:~# docker Command docker not found, but can be installed …...

当代软件专业大学生与青年在新质生产力背景下的发展探究

在新质生产力的浪潮中,信息技术以前所未有的速度革新,为软件专业的大学生和青年带来了丰富的机遇,同时也伴随着一系列的挑战。他们如何把握时代的脉搏,实现个人的发展,成为了值得深入探讨的话题。 一、新质生产力背景下的机遇 随着新质生产力的不断发展,信息技术在各个领…...

MATLAB——知识点备忘

最近在攻略ADC建模相关方面,由好多零碎的知识点,这里写个备忘录。 Matlab 判断一个数是否为整数 1. isinteger 函数 MATLAB中,可以使用 isinteger 函数来判断一个数是否为整数,例如:要判断x是否为整数可以采用以下代…...

C++入门(以c为基础)——学习笔记2

1.引用 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间。在语法层面,我们认为它和它引用的变量共用同一块内存空间。 可以取多个别名,也可以给别名取别名。 b/c/d本质都是别名&#…...

设计模式-单例模式(懒汉式)

1. 概念 保证一个类只有一个实例并为该实例提供一个全局唯一的访问节点 2. 懒汉式-方式一 2.1 代码示例(方式一) 示例 public class Singleton03 {/*** 构造器私有化*/private Singleton03() {}/*** 成员变量*/private static Singleton03 INSTANCE;…...

算法| ss 回溯

39.组合总数46.全排列—478.子集79.单词搜索—1连续差相同的数字—1 39.组合总数 /*** param {number[]} candidates* param {number} target* return {number[][]}*/ // 思路 // dfs传参,传idx, 剩余target // dfs返回: 0 收集&#xff0c…...

基于R语言绘制-散点小提琴图

原文链接:R语言绘图 | 散点小提琴图 本期教程 写在前面 本期的图形来自发表在Nature期刊中的文章,这样的基础图形在日常分析中使用频率较高。 获得本期教程数据及代码,后台回复关键词:20240405 绘图 设置路径 setwd("You…...

Arduino开发 esp32cam+opencv人脸识别距离+语音提醒

效果图 低于20厘米语音提醒字体变红 Arduino代码 可直接复制使用&#xff08;修改自己的WIFI) #include <esp32cam.h> #include <WebServer.h> #include <WiFi.h> // 设置要连接的WiFi名称和密码 const char* WIFI_SSID "gumou"; const char* …...

LeNet卷积神经网络

文章目录 简介conv2d网络层的结构 简介 它是最早发布的卷积神经网络之一 conv2d 这个卷积成的参数先进行介绍一下&#xff1a; self.conv1 nn.Conv2d(in_channels3, out_channels10, kernel_size3, stride1, padding1)先看一下in_channels 输入的通道数&#xff0c;out_cha…...

Python常用算法思想--回溯算法思想详解【附源码】

通过回溯算法解决“组合”问题、“排序”问题、“搜索”之八皇后问题、“子集和”之0-1背包问题、字符串匹配等六个经典案例进行介绍: 一、解决“组合”问题 从给定的一组元素中找到所有可能的组合,这段代码中的 backtrack_combinations 函数使用了回溯思想,调用 backtrack…...

Day5-Hive的结构和优化、数据文件存储格式

Hive 窗口函数 案例 需求&#xff1a;连续三天登陆的用户数据 步骤&#xff1a; -- 建表 create table logins (username string,log_date string ) row format delimited fields terminated by ; -- 加载数据 load data local inpath /opt/hive_data/login into table log…...

01 计算机网络发展与分类

计算机网络&#xff1a;计算机技术与通信技术的结合。 阶段一&#xff1a;早期网络&#xff1a;ARPAnet。 阶段二&#xff1a;厂商独立发展阶段 阶段三&#xff1a;标准化阶段&#xff1a;ISO,TCP/IP 计算机网络分类 计算机网络分类1&#xff1a;通信子网和资源子网 通信子…...

ubuntu安装sublime3并设置中文

安装Sublime Text 3 在Ubuntu上安装Sublime Text 3可以通过以下步骤进行&#xff1a; 打开终端。 导入Sublime Text 3的GPG密钥&#xff1a; wget -qO- https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add - 添加Sublime Text 3的存储库&#xff1a; …...

python调用阿里云短信配置

1. 新增资质和签名 # 访问地址&#xff1a; https://dysms.console.aliyun.com/domestic/text/qualification2. 静静等待几十分钟~~~ 3. 通过sdk去调用&#xff0c;查看有没有python的sdk https://next.api.aliyun.com/api/Dysmsapi/2017-05-25/SendSms?完整代码 # -*- cod…...

MySQL 8.0.13安装配置教程

写个博客记录一下&#xff0c;省得下次换设备换系统还要到处翻教程&#xff0c;直接匹配自己常用的8.0.13版本 1.MySQL包解压到某个路径 2.将bin的路径加到系统环境变量Path下 3.在安装根目录下新建my.ini配置文件&#xff0c;并用编辑器写入如下数据 [mysqld] [client] port…...

【idea快捷键】idea开发java过程中常用的快捷键

含义win快捷键mac快捷键复制当前行或选定的代码块Ctrl DCommand D通过类名快速查找类Ctrl NCommand N通过文件名快速查找文件Ctrl Shift NCommand Shift N通过符号名称快速查找符号&#xff08;类、方法等&#xff09;Ctrl Alt Shift NCommand Shift O跳转到声明C…...

2024年腾讯云GPU云服务器配置价格表(内存/系统盘/地域)

腾讯云GPU服务器是提供GPU算力的弹性计算服务&#xff0c;腾讯云GPU服务器具有超强的并行计算能力&#xff0c;可用于深度学习训练、科学计算、图形图像处理、视频编解码等场景&#xff0c;腾讯云百科txybk.com整理腾讯云GPU服务器租用价格表、GPU实例优势、GPU解决方案、GPU软…...

重构数据访问层-优化数据访问的开发

重新整理了一下过去开发的框架&#xff0c;在准备开发新项目时候&#xff0c;重新整理了一下思路&#xff0c;感觉数据访问层还是很鸡肋。过去几年中&#xff0c;急于完成项目开发和交付&#xff0c;框架都是迭代过来的&#xff0c;虽然满足了开发需求&#xff0c;但是&#xf…...

云计算概述报告

以下是一篇论述类文章 文章目录 I. 云计算介绍&#xff08;1&#xff09;云计算基本概念&#xff08;2&#xff09;云计算基本特征 II. 云计算发展历程&#xff08;1&#xff09;云计算的起源&#xff08;2&#xff09;云计算的发展阶段 III. 云计算特点&#xff08;1&#xff…...

C++:线程库的使用

文章目录 Windows和Linux平台的线程线程构造函数模板参数包 最近发现C11的线程库还没有进行总结&#xff0c;因此本篇对于C11当中新增的线程库的一些基本用法进行总结 Windows和Linux平台的线程 在Linux平台下是存在一些原生的线程系统调用的&#xff0c;比如有pthread_creat…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...