【docker系】docker安装数据迁移

由于原有之前运维安装docker没有指定docker安装数据到指定目录(挂载的数据盘),导致系统盘磁盘占用接近占满,为了后续系统应用正常运行,现在docker默认安装数据肯定需要做迁移。

准备工作

1.做好对应的数据盘挂载

df -h /home/data

# 输出示例:
# Filesystem      Size  Used Avail Use% Mounted on
# /dev/sdb        100G   10G   90G  10% /home/data

2.备份 Docker 数据(重要!)

sudo systemctl stop docker          # 停止 Docker
sudo cp -r /var/lib/docker /home/data/docker_backup  # 备份到新数据盘

迁移 Docker 数据到新目录

临时修改 YUM 缓存目录

如果系统磁盘满了,无法通过yum安装rsync 可 ​临时修改 YUM 缓存路径

# 创建新缓存目录(确保有足够空间)
sudo mkdir -p /home/data/yum-cache

# 修改 YUM 配置
sudo sed -i 's|^cachedir=.*|cachedir=/home/data/yum-cache|' /etc/yum.conf

# 安装 rsync
sudo yum install rsync

# 停止 Docker
sudo systemctl stop docker

# 迁移数据到新目录
sudo yum install -y rsync 

# 迁移数据到新目录
sudo rsync -av /var/lib/docker/ /home/data/docker/

修改 Docker 存储路径

# 设置docker数据目录权限
sudo chmod 711  /home/data/docker

修改 Docker 配置文件

编辑vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd --graph /home/data/docker -H fd:// --containerd=/run/containerd/containerd.sock

这里注意--graph /home/data/docker 不能有多个空格,否则会识别不到目录

查看docker启动日志

sudo journalctl -u docker --no-pager -n 100
 SELinux/AppArmor 权限问题
  • SELinux(CentOS/RHEL)​
    sudo semanage fcontext -a -t container_var_lib_t "/home/data/docker(/.*)?"
    sudo restorecon -Rv /home/data/docker

这里提示我们使用--data-root,--graph 这个已经过期了。

我们修改下配置

编辑vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd --data-root /home/data/docker -H fd:// --containerd=/run/containerd/containerd.sock

重启 Docker 生效

sudo systemctl daemon-reload
sudo systemctl start docker

查看配置数据目录是否生效

sudo systemctl cat docker | grep "ExecStart"

# 查看docker容器是否挂载目录是/home/data开头的目录
docker ps -a 

清理旧数据(确认迁移成功后操作)​

sudo rm -rf /var/lib/docker

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值