Debian 通过 Docker 安装 PostgreSQL 数据库

## Docker for Debian 安装步骤

卸载旧版本:
sudo apt-get remove docker docker-engine docker.io containerd runc

1,更新apt包索引:
sudo apt-get update

2,安装包以允许apt通过HTTPS使用存储库:
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg2 \
    software-properties-common

3,添加Docker的官方GPG密钥:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

通过搜索指纹9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88的最后8个字符,验证您现在拥有带指纹的密钥 。如下图:
sudo apt-key fingerprint 0EBFCD88


4,使用以下命令设置稳定存储库。
- 本机x86_64架构,设置如下():
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable"

- x86_64/amd64架构设置 ##
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable"

- armhf 架构设置 ##
sudo add-apt-repository \
   "deb [arch=armhf] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable"

- arm64架构 ##   
sudo add-apt-repository \
   "deb [arch=arm64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable"


5,安装最新版本的Docker,或者转到下一步安装特定版本:
sudo apt-get install docker-ce docker-ce-cli containerd.io

6,通过运行hello-world 映像验证是否正确安装了Docker CE 。
sudo docker run hello-world


## 安装 PostgreSQL 数据库

1.查询postgresql镜像 docker search postgres 选择第一个镜像,ok

2、获取最新的版本的 postgresql
docker pull postgres

获取指定版本的
docker pull postgres:14.2

3、查看镜像拉取是否成功
docker images 

4、创建数据库文件挂载文件夹
mkdir  -p /data/postgresql

5、启动docker 镜像
docker run --name postgresql --restart=always --privileged=true -e POSTGRES_PASSWORD=111111 -p 15432:5432 -v /data/postgres:/var/lib/postgresql/data -d postgres

指令说明:
run: 创建并运行一个容器
--name: 指定创建的容器的名字;
--restart=always 表示容器退出时,docker会总是自动重启这个容器;
-e POSTGRES_PASSWORD=password: 设置环境变量,指定数据库的登录口令为password;
-p 5432:5432: 端口映射将容器的5432端口映射到外部机器的5432端口;
-v  /data/postgresql:/var/lib/postgresql/data   将运行镜像的/var/lib/postgresql/data目录挂载到宿主机/data/postgresql目录
-d postgres:11.4: 指定使用postgres:11.4作为镜像。


6、进入启动的 postgresql 容器
docker exec -it postgresql /bin/bash

进入容器后退出容器:
exit

7、删除容器
docker rm <容器名称> 或 容器ID
docker rm postgresql

8、删除 docker 镜像
docker rmi [image name][image id]

清理无用的镜像
docker image prune -a


## 迁移 PostgreSQL 数据库

1、提交容器id 变成 镜像
docker commit -p 30b8f18f20b4 container-backup

查看镜像提交是否成功
docker images 

2.把镜像压缩保存到本地路径
docker save -o ~/container-backup.tar container-backup


3、把镜像拷贝到其他服务器上
scp  ~/container-backup.tar root@43.221.34.73:/home/

4、把数据库文件拷贝到另一个服务器(重要,不然数据库丢失,这个是数据库关键数据)
scp  -r /data/postgres root@43.221.34.73:/data/

5、查看容器启动没有
docker ps -a 

6、如果拷贝的镜像 name 和 tag 为空 none,修改镜像id的名称和标签
如:docker tag  容器id  名称:标签
docker tag 60f0710d261d postgres:latest

7、另一台服务器加载镜像
docker load -i /home/postgres-backup.tar

8、启动容器, 数据库文件放到外面 /data/postgres
docker run --name postgresql --privileged=true --restart=always  -e POSTGRES_PASSWORD=111111 -p 15432:5432 -v /data/postgres:/var/lib/postgresql/data -d postgres

9、 开始停止容器运行
docker start | stop | restart postgresql

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。