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


当前回答

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

只创建以下内容的文件:

$ sudo vi /etc/docker/daemon.json

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

在docker 1.12.6中的Ubuntu 16.04.2 LTS上测试

其他回答

对于17.06.0-ce-mac19版本的Mac用户,您可以简单地从用户界面的首选项选项中移动磁盘映像位置,只需更改磁盘映像的位置,它就会工作(通过单击移动磁盘映像)并重新启动docker。使用这种方法,我可以使用外部硬盘来存储docker图像。

更简单的方法:

停止docker服务

sudo systemctl stop docker

移动现有docker目录到新位置

sudo mv /var/lib/docker/ /path/to/new/docker/

创建符号链接

sudo ln -s /path/to/new/docker/ /var/lib/docker

启动docker服务

sudo systemctl start docker

对于Debian/Ubuntu或Fedora,您可能可以使用其他答案。但是,如果/etc/default/docker或/etc/sysconfig/docker下没有文件,并且您的系统正在运行systemd,您可能希望通过h3nrik来遵循这个答案。我使用Arch,这对我有用。

基本上,您需要配置systemd以读取新的docker映像位置作为环境变量,并将该环境变量传递到docker守护进程执行脚本。

为了完整起见,以下是h3nrick的答案:


你有/lib/systemd/system/docker。服务文件?

如果是,编辑它,以便Docker服务使用通常的/etc/default/ Docker作为环境文件:EnvironmentFile=-/etc/default/ Docker。

在/etc/default/docker文件中添加DOCKER_OPTS="-g /home/rseixas/Programs/Docker/images"。

最后执行systemctl daemon-reload && systemctl restart docker。

欲了解更多信息,请参阅文档。

基于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文件夹,如果你没有任何映像,你可以备份。

这篇博文帮助了我

以下是在创建Docker容器之后更改目录的步骤。

注意,你不需要编辑docker。服务或init。D文件,因为它将从下面提到的.json文件中读取更改。

编辑/etc/docker/daemon.Json(如果它不存在,创建它) 添加以下内容

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

停止码头工人

sudo systemctl stop docker

检查码头已停止

ps aux | grep -i docker | grep -v grep

将文件复制到新位置

sudo rsync -axPS /var/lib/docker/ /new/path/to/docker-data

重新启动Docker

sudo systemctl start docker

检查Docker已使用新位置启动

docker info | grep 'Docker Root Dir'

检查一切已经启动,应该运行

docker ps

在服务器上保留两个副本几天,以确保没有问题出现,然后随意删除它。

sudo rm -r /var/lib/docker