引言

在日常的运维工作中,我们经常会遇到需要调整Docker默认存储路径的情况,以适应不同的存储需求或优化性能。然而,这个过程可能会引发一系列的问题,特别是权限问题,这可能会影响容器的正常运行。本文将详细介绍如何将Docker的默认存储路径迁移到/mnt目录,并解决迁移后出现的权限问题。

迁移之后启动容器有问题

今天临时来个需求,需要把docker的默认存储路径改到/mnt目录下,我在把数据完整迁移完之后,重启docker服务成功,但是在重启postgreSQL容器时发现容器可以启动,但是远程连接一直连不上,我就打印容器日志查看,发现了下图的错误:

pg容器启动错误-mnjk.png

导致我一直连接不上,我就在网上找各种解决方法,最终天不负有心人,问题成功解决。下面给出我迁移docker数据的方法和上述问题的解决办法。

1. 迁移Docker存储路径

1.停止docker容器以及docker服务

# 停止正在运行的docker容器
docker stop container_name
# 停止docker服务
sudo systemctl stop docker

2.创建新的存储目录

mkdir -p /mnt/docker

3.迁移Docker数据

cp -r /var/lib/docker/* /mnt/docker/

4.更新Docker配置

编辑Docker的配置文件,将存储路径指向新的目录。

nano /etc/docker/daemon.json

# 在文件中添加以下内容
{
  "data-root": "/mnt/docker",
  "storage-driver": "overlay2"
}

5.重启Docker服务

#

2.解决容器重启的权限问题

1.检查容器日志

查看容器的日志,找出具体是哪个文件缺少权限。

d

2.进入容器内部

docker exec -it pg容器的名称或id /bin/bash

3.修改文件权限

chown -R postgres:postgres /etc/ssl/private

4.退出并重启容器

重启容器之后,打印容器的日志看看,还有无权限问题,如果有就再进行上述步骤,直到容器成功启动为止。

温馨提示

迁移有风险,修改需谨慎!遇到bug不要紧,对它重拳出击。最后希望我们写的代码没有bug,配置环境一步到位。