docker配置本地镜像与容器的存储位置
docker配置本地镜像与容器的存储位置
查看docker占用情况
1 | docker system df |
以下命令只能清除悬空镜像,未被使用的镜像不会被删除
(未经测试,谨慎使用!!!)
1 | docker system prune |
以下命令自动清理docker
(未经测试,谨慎使用!!!)
1 | docker system prune -a |
- 已停止的容器(container)
- 未被任何容器所使用的卷(volume)
- 未被任何容器所关联的网络(network)
- 所有悬空镜像(image)
所以选择docker system prune -a自动清理docker。
1.软链接
默认情况下Docker的存放位置为:/var/lib/docker
可以通过下面命令查看具体位置:
1 | docker info | grep "Docker Root Dir" |
- 首先停掉Docker服务:
1 | service docker stop |
- 然后移动整个/var/lib/docker目录到目的路径:
1 | mv /var/lib/docker /root/data/docker |
这时候启动Docker时发现存储目录依旧是/var/lib/docker,但是实际上是存储在数据盘的,你可以在数据盘上看到容量变化。
2.可扩展逻辑卷
默认情况下docker的存放位置为: /var/lib/docker
挂载大分区到/var/lib/docker; 一般选择建立逻辑分区lvm,方便后期扩展
- (1)建立新分区,并格式化
PS: 以下操作建设你已经有现成的卷组,直接可以划逻辑卷。或者你可以自己创建逻辑卷,或者不适用逻辑卷直接使用分区
1 | lvcreate -L 300G lv_docker vg_home |
- (2)挂载新分区到临时挂载点
1 | mkdir /mnt/docker |
- (3)停掉docker后拷贝/var/lib/docker下数据到临时挂载点
1 | service docker stop |
- (4)备份/var/lib/docker 为/var/lib/docker.bak,并创建新的/var/lib/docker目录
1 | mv /var/lib/docker /var/lib/docker.bak |
- (5)挂载新分区到/var/lib/docker,并设置开机自动挂载
1 | mount /dev/vg_home/lv_docker /var/lib/docker |
- (6)检测docker是否可用,数据是否完整
1 | docker images |
- (7)确认无误后卸载临时挂载点,删除/var/lib/docker.bak
1 | umount /mnt/docker |
3.修改镜像和容器的存放路径
指定镜像和容器存放路径的参数是–graph=/var/lib/docker,我们只需要修改配置文件指定启动参数即可。
Docker 的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致,在 Ubuntu 中的位置是:/etc/default/docker,在 CentOS 中的位置是:/etc/sysconfig/docker
- 如果是 CentOS 则添加下面这行
1 | OPTIONS=--graph="/root/data/docker" --selinux-enabled -H fd:// |
- 如果是 Ubuntu 则添加下面这行(因为 Ubuntu 默认没开启 selinux):
1 | OPTIONS=--graph="/root/data/docker" -H fd:// |
最后重新启动,Docker 的路径就改成 /root/data/docker 了。
如果没有生效,按如下操作
1 | cat >>/etc/default/docker <<EOF |
发现配置并没有生效, 解决方案:
1 | mkdir -p /etc/systemd/system/docker.service.d |
重启服务
1 | systemctl daemon-reload |
查看配置是否生效
评论