问题
最近使用docker手动导入离线镜像,总是出现,如下问题:
no space left on the device
简单来说,就是docker根目录满了。
解决
查询当前docker info设置位置
使用如下命令,查询docker根目录位置:
docker info
输入上述命令后,找到其中一行包含Docker Root Dir:
里面就包含了当前Docker根目录位置。
/etc/docker/daemon.json
创建docker默认配置文件,上面这个配置文件位置是在Linux上面生效。
# 先停止docker
systemctl stop docker
sudo vim /etc/docker/daemon.json
具体内容如下:
{
"data-root": "/data/zyl/docker",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
修改这个配置文件,主要就是设置一下docker根目录位置,以及设置一下滚动日志文件限制,这样docker的日志文件就不会无限增长。最大为10m,最多3个文件。
迁移原有docker数据
cp -arp /var/lib/docker/* /data/zyl/docker
将原有的根目录数据,复制到新的根目录中。
重新加载配置
systemctl daemon-reload
systemctl start docker
重启docker容器
上面的步骤,都是在root用户中完成。当docker启动成功后,切回普通用户,重启所有docker容器即可。
总结
在使用docker的过程中,需要注意docker的根目录磁盘位置,默认情况下docker的日志是没有限制的,所有,除了要修改根目录位置到比较大的地方,还需要设置docker滚动日志方式。
参考
- daemon-configuration-file
- JSON File logging driver
- Docker修改默认存储路径 /var/lib/docker
- Docker目录/var/lib/docker/containers文件太大
- Change Docker Default Root Data Directory
- Relocating the Docker root directory