8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何更改docker镜像安装目录?

Frayal 2月前

194 0

据我所知,docker 镜像在被拉取时会安装到 /var/lib/docker。有没有办法更改此位置,例如更改到 /mnt 之类的已安装卷?

据我所知,docker 镜像 /var/lib/docker 在被拉取时安装到。有没有办法更改此位置,例如更改到已安装的卷 /mnt

帖子版权声明 1、本帖标题:如何更改docker镜像安装目录?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Frayal在本站《ubuntu》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 使用最新版本的 Docker,您可以将参数的值设置 data-root 为自定义路径 /etc/docker/daemon.json (根据 https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file )。

    在启动 Docker 守护进程时 -g 使用选项更改 Docker 的存储基目录(容器和图像所在的位置) docker --help 以便在 Docker 启动时自动应用此设置, /etc/default/docker

  • 谢谢你的回答。你能告诉我如何在 docker upstart 文件中添加这个要求吗?我是否应该将 -g 标志添加到 DOCKER_OPTS 变量中?

  • 是的,将此行更改为 DOCKER_OPTS=\'-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt\'

  • 如果 docker 忽略了您的 /etc/default/docker 文件,您可能需要针对 Debian 或 Ubuntu 某些版本中的错误实施此解决方案。

  • 我尝试了几种不同的方法,但最终编辑 /etc/docker/daemon.json 配置对我有用。这里有很好的说明:evodify.com/change-docker-storage-location

  • 根据评论的建议,我利用 Docker systemd 文档 来改进这个答案。下面的过程不需要重新启动并且更加干净。

    首先创建自定义配置的目录和文件:

    sudo mkdir -p /etc/systemd/system/docker.service.d
    sudo $EDITOR /etc/systemd/system/docker.service.d/docker-storage.conf
    

    17.06-ce 之前的 docker 版本 粘贴:

    [Service]
    ExecStart=
    ExecStart=/usr/bin/docker daemon -H fd:// --graph="/mnt"
    

    17.06-ce之后的 docker 粘贴:

    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd -H fd:// --data-root="/mnt"
    

    替代方法 daemon.json

    我最近在 Fedora 25 上尝试了上述步骤但似乎不起作用。除了 /etc/docker/daemon.json 进行简单的修改外,还有以下方法:

    {
        "graph": "/mnt",
        "storage-driver": "overlay"
    }
    

    尽管使用了这种方法,您仍然必须重新加载配置并重新启动 Docker:

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    要确认 Docker 已重新配置:

    docker info|grep "loop file"
    

    在最近的版本(17.03)中需要不同的命令:

    docker info|grep "Docker Root Dir"
    

    输出应如下所示:

     Data loop file: /mnt/devicemapper/devicemapper/data
     Metadata loop file: /mnt/devicemapper/devicemapper/metadata
    

    或者:

     Docker Root Dir: /mnt
    

    然后你就可以安全地删除旧的 Docker 存储:

    rm -rf /var/lib/docker
    
  • 此链接 docs.docker.com/engine/admin/systemd 解释了如何使用 systemd 配置 Docker,它适用于较新的 Linux 发行版,例如 Ubuntu 16.04。

  • docker info 语句可能已过时。在 Ubuntu 16.04 上,重新配置的检查是 sudo docker info | grep \'Docker Root Dir\'。否则,好的答案应该是可接受的;)

  • 在新版本的 Linux (4.10) 和 Docker (docker-ce 17.06) 中,必须按如下方式更改行:/usr/bin/dockerd -H fd:// --data-root=\'/mnt\'

  • 如果在运行 docker info|grep \'Docker Root Dir\' 时看到 Docker Root Dir: /\'/mnt\',则必须在文件 docker-storage.conf 中将 --data-root=\'/mnt\' 替换为 --data-root=/mnt

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

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

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

    然后使用以下命令重新启动 Docker:

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  • 您的评论帮助我找到了此页面:adriel.co.nz/blog/2018/01/25/… 谢谢!

  • 我在这里评论让人们知道哪个版本可以使用这个,在 github.com/docker/docker.github.io/pull/5978 发布后,它会更改官方网站。

  • 这是最新 docker 的正确答案。我只想补充一点,在对 daemon.json 进行更改并重新启动 docker 服务后,只需使用 docker info|grep \'Docker Root Dir\' 确认 docker 已获取该路径(如 @piotr-kr 在另一个答案中所述)

  • 更简单的方法:

    停止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
    
  • 对我来说效果很好,但没有符号链接命令的尾部斜杠:sudo ln -s /path/to/new/docker/ /var/lib/docker

  • 我已经执行了上述操作,docker 已启动并运行。但我找不到我的 docker 镜像已经存在。有什么建议吗?

  • 由于我没有找到在 Fedora 中执行此操作的正确说明(编辑:人们在评论中指出这也应该适用于 CentOS 和 Suse)(/etc/default/docker 在那里没有使用),我在这里添加我的答案:

    您必须编辑 /etc/sysconfig/docker ,并在 OPTIONS 变量中添加 -g 选项。如果有多个选项,请确保将它们括在 \'\' 中。就我而言,该文件包含:

    OPTIONS=--selinux-enabled
    

    所以它会变成

    OPTIONS="--selinux-enabled -g /mnt"
    

    重新启动后( systemctl restart docker ),Docker 应该使用新的目录

  • 在 CentOS 6.5/6.6 以及可能的 7 上,您使用相同的 /etc/sysconfig/docker 文件,但将参数添加到变量名 other_args 中。

返回
作者最近主题: