最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker27.3.1中安裝 PostgreSQL16的實現(xiàn)步驟

 更新時間:2025年07月28日 09:00:13   作者:吳啟維  
本文主要介紹了Docker27.3.1中安裝 PostgreSQL16的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言:為什么在 Docker 中部署 PostgreSQL?

在云原生時代,容器化部署已成為生產(chǎn)環(huán)境的首選方案。通過 Docker 部署 PostgreSQL 具有以下顯著優(yōu)勢:

  • 環(huán)境一致性:消除“在我機器上能運行”的問題
  • 快速部署:秒級啟動數(shù)據(jù)庫實例
  • 資源隔離:精確控制 CPU、內(nèi)存等資源
  • 簡化運維:版本升級、備份恢復(fù)更便捷
  • 高可移植性:輕松遷移到任何支持 Docker 的環(huán)境

本文將以 Docker 27.3.1PostgreSQL 16 為例,手把手教你完成部署。

一、環(huán)境準備

1. 確認 Docker 版本

docker --version
# Docker version 27.3.1, build a224086

?? 提示:如版本低于27.0,請先升級:官方升級指南

2. 創(chuàng)建專用網(wǎng)絡(luò)(生產(chǎn)環(huán)境必備)

docker network create pg-network

作用

  • 隔離數(shù)據(jù)庫流量
  • 避免端口沖突
  • 方便后續(xù)擴展(如連接應(yīng)用容器)

二、PostgreSQL 16 容器化部署

1. 拉取官方鏡像(指定版本)

docker pull postgres:16

為什么指定版本?

  • 避免自動升級導(dǎo)致兼容性問題
  • 確保生產(chǎn)環(huán)境穩(wěn)定性
  • PostgreSQL 16 是最新LTS版本(支持至2031年)

2. 創(chuàng)建持久化數(shù)據(jù)卷

docker volume create pgdata

生產(chǎn)環(huán)境重要性

  • 容器重啟/刪除時數(shù)據(jù)不丟失
  • 獨立于容器生命周期管理
  • 方便備份遷移

3. 啟動 PostgreSQL 容器(生產(chǎn)優(yōu)化版)

docker run -d \
  --name prod-postgres \
  --network pg-network \
  -p 5432:5432 \
  -e POSTGRES_PASSWORD=Str0ngP@ss!2025 \
  -e POSTGRES_USER=prod_admin \
  -e POSTGRES_DB=production_db \
  -e TZ=Asia/Shanghai \
  -e POSTGRES_INITDB_ARGS="--data-checksums" \
  -v pgdata:/var/lib/postgresql/data \
  -v /etc/localtime:/etc/localtime:ro \
  --restart=unless-stopped \
  --memory=4g \
  --cpus=2 \
  --health-cmd="pg_isready -U prod_admin" \
  --health-interval=30s \
  --health-timeout=5s \
  --health-retries=3 \
  postgres:16 \
  -c max_connections=200 \
  -c shared_buffers=1GB

參數(shù)詳解

參數(shù)說明生產(chǎn)環(huán)境重要性
--network pg-network加入專用網(wǎng)絡(luò)????? 網(wǎng)絡(luò)安全隔離
-e POSTGRES_PASSWORD管理員密碼????? 必須使用強密碼
-e TZ=Asia/Shanghai設(shè)置時區(qū)???? 避免時間相關(guān)錯誤
-v pgdata:/var/...掛載數(shù)據(jù)卷????? 數(shù)據(jù)持久化
--restart=unless-stopped自動重啟策略???? 高可用保障
--memory=4g --cpus=2資源限制???? 防止單容器耗盡資源
--health-cmd健康檢查??? 自動故障檢測
-c max_connections=200最大連接數(shù)??? 根據(jù)業(yè)務(wù)需求調(diào)整
-c shared_buffers=1GB共享內(nèi)存大小??? 性能優(yōu)化關(guān)鍵參數(shù)

三、驗證與連接

1. 檢查容器狀態(tài)

docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"

預(yù)期輸出

CONTAINER ID  NAMES          STATUS                    PORTS
a1b2c3d4e5f6  prod-postgres  Up 2 minutes (healthy)   0.0.0.0:5432->5432/tcp

2. 查看實時日志

docker logs -f prod-postgres

關(guān)鍵日志確認

PostgreSQL init process complete; ready for start up
database system is ready to accept connections

3. 命令行連接測試

docker exec -it prod-postgres \
  psql -U prod_admin -d production_db -c "SELECT version();"

預(yù)期輸出

PostgreSQL 16.3 on x86_64-pc-linux-gnu, compiled by gcc...

4. 客戶端工具連接

使用 DBeaver/pgAdmin 連接:

  • Host: 服務(wù)器IP
  • Port: 5432
  • Database: production_db
  • Username: prod_admin
  • Password: Str0ngP@ss!2025

四、生產(chǎn)環(huán)境高級配置

1. 配置文件自定義

# 創(chuàng)建配置目錄
mkdir -p /docker/pg-config

# 生成默認配置
docker run --rm postgres:16 \
  cat /usr/share/postgresql/postgresql.conf.sample > /docker/pg-config/postgresql.conf

# 編輯配置文件(優(yōu)化關(guān)鍵參數(shù))
nano /docker/pg-config/postgresql.conf

關(guān)鍵參數(shù)建議

listen_addresses = '*'  # 允許所有網(wǎng)絡(luò)接口
max_connections = 250   # 根據(jù)實際負載調(diào)整
shared_buffers = 1GB    # 建議分配內(nèi)存的25%
work_mem = 16MB         # 每個操作的內(nèi)存
maintenance_work_mem = 512MB  # 維護操作內(nèi)存
synchronous_commit = off  # 異步提交提升性能

重新啟動容器

docker run ... \
  -v /docker/pg-config/postgresql.conf:/etc/postgresql/postgresql.conf \
  postgres:16 -c 'config_file=/etc/postgresql/postgresql.conf'

2. 定期備份方案

創(chuàng)建備份腳本 (pg-backup.sh):

#!/bin/bash
BACKUP_DIR=/backups/pg
DATE=$(date +%Y%m%d_%H%M%S)

docker exec prod-postgres \
  pg_dump -U prod_admin -Fc production_db > $BACKUP_DIR/prod_db_$DATE.dump

# 保留最近7天備份
find $BACKUP_DIR -mtime +7 -delete

設(shè)置定時任務(wù)

crontab -e
# 每天凌晨2點備份
0 2 * * * /path/to/pg-backup.sh

3. 監(jiān)控配置

使用內(nèi)置統(tǒng)計收集器:

ALTER SYSTEM SET track_activities = on;
ALTER SYSTEM SET track_counts = on;
ALTER SYSTEM SET track_io_timing = on;
SELECT pg_reload_conf();

推薦監(jiān)控工具:

  • Prometheus + Grafana(配合 postgres_exporter)
  • pgAdmin 4 監(jiān)控面板
  • Datadog / New Relic

五、故障排查與維護

1. 常見問題解決

問題1:端口沖突

# 檢查占用5432端口的進程
sudo lsof -i :5432

# 解決方案:改用其他端口
docker run ... -p 5433:5432 ...

問題2:忘記管理員密碼

# 進入容器bash
docker exec -it prod-postgres bash

# 以postgres用戶連接
psql -U postgres

# 重置密碼
ALTER USER prod_admin WITH PASSWORD 'NewStrongP@ss!2025';

問題3:磁盤空間不足

# 查看容器磁盤使用
docker system df

# 清理無用容器/鏡像
docker system prune -f

# 擴展數(shù)據(jù)卷
docker volume inspect pgdata # 找到實際路徑
# 然后擴展對應(yīng)磁盤分區(qū)

2. 關(guān)鍵維護命令

查看資源使用

docker stats prod-postgres

進入維護模式

docker exec -it prod-postgres bash
psql -U prod_admin -d production_db

日志分析

docker logs --tail 100 prod-postgres | grep -i error

六、安全加固建議

網(wǎng)絡(luò)層安全

# 限制訪問IP(僅允許應(yīng)用服務(wù)器)
docker network create --subnet=10.1.0.0/16 pg-secure-network

SSL加密連接

# 啟動容器時添加SSL參數(shù)
-e POSTGRES_SSL=on \
-e POSTGRES_SSL_CERT_FILE=/etc/ssl/certs/server.crt \
-e POSTGRES_SSL_KEY_FILE=/etc/ssl/private/server.key

定期輪換憑證

# 每月更新密碼
ALTER USER prod_admin WITH PASSWORD 'NewP@ssw0rd_$(date +%Y%m)';

審計日志

ALTER SYSTEM SET log_statement = 'all';
SELECT pg_reload_conf();

結(jié)語:容器化數(shù)據(jù)庫的未來

通過 Docker 部署 PostgreSQL 不僅簡化了運維流程,還為現(xiàn)代化應(yīng)用架構(gòu)提供了堅實基礎(chǔ)。

到此這篇關(guān)于Docker27.3.1中安裝 PostgreSQL16的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Docker 安裝 PostgreSQL16內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker-cli源碼窺探(推薦)

    docker-cli源碼窺探(推薦)

    最近一直在使用docker,在這做下記錄,本文我將以docker?ps?-a?命令為例探究docker命令在?client側(cè)的執(zhí)行過程,源碼的版本為20.10,對docker-cli源碼知識感興趣的朋友一起學(xué)習(xí)下吧
    2022-11-11
  • 深入淺析Docker容器中的Patroni

    深入淺析Docker容器中的Patroni

    今天將向大家介紹,如何搭建容器下的Patroni集群環(huán)境,Patroni作為開箱即用PG高可用工具,越來越多的被各個廠商用于云環(huán)境下使用
    2021-11-11
  • Idea部署遠程Docker并配置文件

    Idea部署遠程Docker并配置文件

    這篇文章給大家介紹Idea部署遠程Docker并添加配置文件的方法及修改項目pom文件的代碼解析,對idea部署遠程docker相關(guān)知識感興趣的朋友一起看看吧
    2021-06-06
  • 詳解Windows下運用Docker部署Node.js開發(fā)環(huán)境

    詳解Windows下運用Docker部署Node.js開發(fā)環(huán)境

    這篇文章主要介紹了詳解Windows下運用Docker部署Node.js開發(fā)環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 使用Docker部署JSON Crack的流程步驟

    使用Docker部署JSON Crack的流程步驟

    本文將給大家詳細介紹了如何使用Docker部署JSON Crack,JSON Crack 是一款免費的開源數(shù)據(jù)可視化應(yīng)用程序,能夠?qū)?nbsp;JSON、YAML、XML、CSV 等數(shù)據(jù)格式可視化為交互式圖表,文中通過代碼和圖片給大家講解的非常詳細,需要的朋友可以參考下
    2024-02-02
  • Docker部署MinIO對象存儲服務(wù)器結(jié)合Cpolar實現(xiàn)遠程訪問的操作方法

    Docker部署MinIO對象存儲服務(wù)器結(jié)合Cpolar實現(xiàn)遠程訪問的操作方法

    MinIO是一個開源的軟件,可以免費使用,還可以在普通硬件上運行,降低了存儲成本,本文介紹在本地Docker中部署MinIO服務(wù),并實現(xiàn)遠程訪問管理界面,節(jié)約云服務(wù)器運行成本,感興趣的朋友一起看看吧
    2023-12-12
  • Docker容器交互之docker?exec?-it、Shell與容器運行環(huán)境詳解

    Docker容器交互之docker?exec?-it、Shell與容器運行環(huán)境詳解

    docker exec是Docker提供的一個命令,用于在已經(jīng)運行的容器中執(zhí)行一個新的命令,這篇文章主要介紹了Docker容器交互之docker exec -it、Shell與容器運行環(huán)境的相關(guān)資料,需要的朋友可以參考下
    2026-04-04
  • Docker刪除某個鏡像的實現(xiàn)方法

    Docker刪除某個鏡像的實現(xiàn)方法

    在使用 Docker 時,經(jīng)常需要刪除不再需要的鏡像、容器和卷,以釋放存儲空間,本文主要介紹了Docker刪除某個鏡像的實現(xiàn)方法,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • docker構(gòu)建并啟動前端完整流程

    docker構(gòu)建并啟動前端完整流程

    使用?Docker?部署前端項目是一種高效且可靠的方法,可以確保項目在不同環(huán)境中的一致性,這篇文章主要介紹了docker構(gòu)建并啟動前端的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-07-07
  • Docker使用鏡像倉庫的方法

    Docker使用鏡像倉庫的方法

    這篇文章介紹了Docker使用鏡像倉庫的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01

最新評論

安庆市| 三门县| 天水市| 梁平县| 芜湖县| 砚山县| 南汇区| 武威市| 铁岭市| 富顺县| 广河县| 永和县| 四会市| 车险| 阿坝县| 文水县| 濮阳市| 库车县| 饶阳县| 繁峙县| 阿拉尔市| 阿坝县| 宣恩县| 宜城市| 屏南县| 义乌市| 门头沟区| 兴义市| 镇平县| 呼伦贝尔市| 鹤壁市| 邢台县| 红河县| 肇东市| 孟连| 仁布县| 富蕴县| 汝南县| 锡林郭勒盟| 阳山县| 夏河县|