Linux修改docker镜像和容器的默认存储位置
2021-12-02 本文已影响0人
Jerry_1116
刚开始使用docker时,不太关注docker 存储镜像和容器的位置,使用默认目录。当使用docker启动的容器越来越多时,镜像和容器占用空间也越来越大。特别是使用Linux云服务器ECS的情况下,默认系统盘大小有限,默认目录是在系统盘,很容易就将磁盘占满,导致无法重新启动更多的容器。
下面以CentOS 7为例,讲解如何修改docker的默认存储位置。修改默认存储位置,分为两种情况:
- 保留原有镜像和容器
- 不保留原有镜像和容器
1 保留原有镜像和容器
操作方法要点:将原有的镜像和容器移动到新的位置,并在原来的目录创建软链接,软链接指向新的镜像和容器存储位置。
例如,CentOS 7默认docker存储位置是/var/lib/docker,新的存储位置:/mnt/data/docker
操作步骤命令:
- 确认当前的docker存储位置
# docker info
找到Server下的Docker Root Dir标记,内容是当前docker镜像和容器的存储位置。
- 停止docker服务
systemctl stop docker
- 将原有数据移动到目标位置
例如,CentOS 7默认docker存储位置是/var/lib/docker,新的存储位置:/mnt/data/docker
cp -rp /var/lib/docker /mnt/data/docker
- 创建软连接指向实际存储位置
!!!强烈建议操作之前先进行备份!!!
# 备份
mv /var/lib/docker /var/lib/docker-bak-20211202
# 创建软连接/var/lib/docker,指向新的存储位置/mnt/data/docker
ln -s /mnt/data/docker /var/lib/docker
- 启动docker服务
systemctl start docker
- 修改结果确认
运行docker info
,检查Server下的Docker Root Dir标记,显示的路径应该是新的docker镜像和容器存储位置,如本例的/mnt/data/docker
。
2 不保留原有镜像和容器
例如,CentOS 7默认docker存储位置是/var/lib/docker,新的存储位置:/mnt/data/docker
- 确认当前的docker存储位置
# docker info
找到Server下的(1) Docker Root Dir标记,内容是当前docker镜像和容器的存储位置;(2)Storage Driver标记,内容是存储驱动器名称。
- 停止docker服务
systemctl stop docker
- 创建drop-in目录和drop-in文件
mkdir /etc/systemd/system/docker.service.d
touch /etc/systemd/system/docker.service.d/docker.conf
echo "[Service]">>/etc/systemd/system/docker.service.d/docker.conf
echo "ExecStart=">>/etc/systemd/system/docker.service.d/docker.conf
echo "ExecStart=/usr/bin/dockerd --graph="/mnt/data/docker" --storage-driver=overlay2">>/etc/systemd/system/docker.service.d/docker.conf
/mnt/data/docker
是新的存储位置,而overlay2
是当前docker所使用的存储驱动。
- 重新加载服务守护程序和启动docker服务
systemctl daemon-reload
systemctl start docker
- 修改结果确认
运行docker info
,检查Server下的Docker Root Dir标记,显示的路径应该是新的docker镜像和容器存储位置,如本例的/mnt/data/docker
。