更改 Docker 的数据目录

ssd*_*der 11 server lxc docker

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

Con*_*eca 11

我相信在本指南中您会得到很好的解释。

您可以在启动 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:编辑/etc/sysconfig/docker,并-g在 other_args 变量中添加选项:例如。other_args="-g /var/lib/testdir". 如果有多个选项,请确保将它们括在“”中。重启后,(service docker restart) Docker 应该使用新目录。

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

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

1)停止泊坞窗: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)重启你的容器解决符号链接)


Mat*_*ttK 11

在 Ubuntu 上更新的 Docker 版本中,您将/etc/default/daemon.json像这样编辑:

{
  "data-root": "/new/location"
}
Run Code Online (Sandbox Code Playgroud)


Wan*_*gic 6

扩展@MattK的答案:

有关控制 Docker 守护进程的 Docker 文档建议采用与平台无关的方法来执行此操作:

编辑 /etc/docker/daemon.json 文件(如果尚不存在则创建它)以包含该行

{
    "data-root": "/mnt/docker-data",
    (...)
}
Run Code Online (Sandbox Code Playgroud)

where/mnt/docker-data是您希望 docker 映像和容器所在的目录。

然后

sudo systemctl restart docker
Run Code Online (Sandbox Code Playgroud)

您可以通过运行来检查它是否有效

docker info
Run Code Online (Sandbox Code Playgroud)

并查找以 开头的行的内容Docker Root Dir:

另请参阅/sf/answers/3515236651/https://unix.stackexchange.com/q/452368/36043

请注意,/sf/answers/4764326521/建议,如果您通过 Snap 安装 Docker,则应该daemon.json/var/snap/docker/current/config/daemon.json.


Stu*_*all 2

要更改data其中的目录,docker需要使用选项运行-g /my/data。在我的/etc/default/docker我设置:

DOCKER_OPTS="-g /srv/docker"

另请参阅我的笔记

要更改data目录,lxc我输入/etc/lxc/lxc.conf

lxc.lxcpath = /srv/lxc