修改Docker的数据目录

修改Docker的数据目录

我如何更改 Docker 中用于保存容器的数据目录(或 lxc 用于保存容器的数据目录)?我的服务器上有一个 ssd 和一个硬盘,我希望容器可以保存在硬盘上。谢谢

答案1

我相信本指南你会得到一个很好的解释。

您可以在启动 Docker 守护程序时使用 -g 选项更改 Docker 的存储基目录(容器和图像所在的位置)。

Ubuntu/Debian:/etc/default/docker使用以下选项编辑您的文件-gDOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"

Fedora/Centos:编辑,并在 other_args 变量中/etc/sysconfig/docker添加选项:例如。如果有多个选项,请确保将它们括在“”中。重启后,(service docker restart)Docker 应该使用新目录。-gother_args="-g /var/lib/testdir"

使用符号链接是改变图像存储的另一种方法。

注意 - 这些步骤取决于您当前的 /var/lib/docker 是否为实际目录(而不是指向其他位置的符号链接)。

1)停止docker:service docker stop. 确认没有docker进程正在运行 ps faux

2)再次检查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/2209313https://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

相关内容