据我所知,当docker映像被拉出来时,它们被安装到/var/lib/docker中。是否有办法改变这个位置,比如到一个挂载的卷,比如/mnt?


当前回答

一个更简单的解决方案是创建一个软链接点,指向您想要的任何东西,例如

link -s /var/lib/docker /mnt/whatever

它适用于我的CentOS 6.5服务器。

其他回答

复制粘贴版本的获胜者答案:)

只创建以下内容的文件:

$ sudo vi /etc/docker/daemon.json

  {
      "graph": "/my-docker-images"
  }

在docker 1.12.6中的Ubuntu 16.04.2 LTS上测试

在最新版本的Docker中,你可以将data-root参数的值设置为自定义路径,在/etc/docker/daemon.json中 (根据https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file)。

在旧版本中,你可以在启动Docker守护进程时使用-goption改变Docker的存储基本目录(容器和映像所在的目录)。(查看docker—help)。 当Docker启动时,您可以通过将其添加到/etc/default/docker来自动应用此设置

对于新的docker版本,我们需要使用data-root,因为graph在v17.05.0中已弃用:官方弃用文档

编辑/etc/docker/daemon.Json(如果它不存在,创建它),并包括:

{
  "data-root": "/new/path/to/docker-data"
}

然后重新启动Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

更详细的一步一步的解释(包括移动数据)使用Docker存储与data-root可以在:博客文章中找到 在Windows的情况下,类似的帖子Windows特定

在Fedora 26和许多其他版本上,按照上面的描述移动基本文件夹位置后可能会遇到错误。如果你要把它移动到/home下面的某个地方,这一点尤其正确。这是因为SeLinux介入并阻止docker容器在这个位置下运行它的许多程序。

简单的解决方案是在添加-g参数时删除——enable-selinux选项。

基于Linux安装后步骤指南和我在web爬行时发现的官方方法如下:

覆盖docker服务配置文件: Sudo systemctl编辑docker.service 添加或修改以下行,替换您自己的值。 (服务) ExecStart = ExecStart = / usr / bin / dockerd——图=“/ mnt /码头工人”

保存文件。(它创建了:/etc/systemd/system/docker.service.d/override.conf)

重新加载systemctl配置。 Sudo systemctl daemon-reload 重启码头工人。 Sudo systemctl restart docker.service

在这之后,如果你可以核化/var/lib/docker文件夹,如果你没有任何映像,你可以备份。