我如何更改 Docker 中用于保存容器的数据目录(或 lxc 用于保存容器的数据目录)?我的服务器上有一个 ssd 和一个硬盘,我希望容器可以保存在硬盘上。谢谢
答案1
我相信本指南你会得到一个很好的解释。
您可以在启动 Docker 守护程序时使用 -g 选项更改 Docker 的存储基目录(容器和图像所在的位置)。
Ubuntu/Debian:
/etc/default/docker
使用以下选项编辑您的文件-g
:DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"
Fedora/Centos:编辑,并在 other_args 变量中
/etc/sysconfig/docker
添加选项:例如。如果有多个选项,请确保将它们括在“”中。重启后,(service docker restart)Docker 应该使用新目录。-g
other_args="-g /var/lib/testdir"
使用符号链接是改变图像存储的另一种方法。
注意 - 这些步骤取决于您当前的 /var/lib/docker 是否为实际目录(而不是指向其他位置的符号链接)。
1)停止docker:
service docker stop
. 确认没有docker进程正在运行 ps faux2)再次检查docker是否真的没有运行。查看当前docker目录:ls
/var/lib/docker/
2b)进行备份 -
tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz
3)将
/var/lib/docker
目录移动到新分区:mv /var/lib/docker /mnt/pd0/docker
4)创建符号链接:
ln -s /mnt/pd0/docker /var/lib/docker
5)查看目录结构,确保它看起来与 mv 之前一样:(
ls /var/lib/docker/
注意末尾的斜杠6)启动docker备份
service docker start
7)重新启动容器并解析符号链接)
答案2
在 Ubuntu 上较新版本的 Docker 中,你可以进行/etc/default/daemon.json
如下编辑:
{
"data-root": "/new/location"
}
答案3
扩展@MattK 的答案:
这有关控制 Docker 守护进程的 Docker 文档建议采用与平台无关的方法来执行此操作:
编辑 /etc/docker/daemon.json 文件(如果不存在则创建)以包含以下行
{
"data-root": "/mnt/docker-data",
(...)
}
/mnt/docker-data
您希望 docker 镜像和容器存放的目录在哪里。
然后
sudo systemctl restart docker
您可以通过运行来检查它是否有效
docker info
并查找以 开头的行的内容Docker Root Dir:
。
也可以看看https://stackoverflow.com/a/50217666/2209313和https://unix.stackexchange.com/q/452368/36043。
注意https://stackoverflow.com/a/68061807/2209313建议您如果通过 Snap 安装了 Docker,那么您应该daemon.json
在中找到您的文件/var/snap/docker/current/config/daemon.json
。
答案4
升级到 Docker 1.13.0。
来自发行说明:
- New
The storage location of the Linux volume can now be moved