【问题标题】:How do I move a docker container's image to a persistent disk?如何将 docker 容器的映像移动到永久磁盘?
【发布时间】:2014-02-24 11:57:08
【问题描述】:

我们注意到我们的容器占用了大量空间,其中一个原因是图像。

我们想移动图像。

我现在知道它们存储在 /var/lib/docker/graph/<id>/layer

有没有办法将这些移动到另一个位置/永久磁盘?

【问题讨论】:

  • 请,如果您发现回复有用,请将其标记为绿色 ;-)

标签: docker lxc persistent-storage linux-containers


【解决方案1】:

要将图像移动到另一个驱动器或另一个服务器:

docker save image_name > image_name.tar

mv image_name.tar /somewhere/else/

将其加载回 docker

docker load < image_name.tar 

Reference.

【讨论】:

    【解决方案2】:

    您始终可以将 /var/lib/docker 挂载到不同的磁盘。否则,您可以使用-g /path 启动守护进程,以告诉 docker 使用不同的目录进行存储。

    【讨论】:

      【解决方案3】:

      这是移动 docker 数据的任何简单方法:

      sudo service docker stop
      sudo mv /var/lib/docker /a/new/location
      sudo ln -s /a/new/location /var/lib/docker # Create a symbolic link
      sudo service docker start
      

      无需更改DOCKER_OPTS或使用-g /path

      【讨论】:

        【解决方案4】:

        使用 answer by @creack 在我的 Ubuntu 安装中执行以下操作,将我的整个 docker 图像/容器文件夹移动到新位置/磁盘。这样做的好处是我安装的任何新映像都将使用新的磁盘位置。

        首先停止docker服务:

        sudo service docker stop
        

        然后将docker文件夹从默认位置移动到你的目标位置:

        sudo mv /var/lib/docker /thenewlocation
        

        然后编辑 /etc/default/docker 文件,插入/修改以下行,该行提供新位置作为 docker 服务的参数:

        DOCKER_OPTS="-g /thenewlocation/docker"
        

        重启docker服务:

        sudo service docker start
        

        这对我来说 100% 有效 - 我的所有图像都保持完好。

        【讨论】:

        • 似乎不起作用:我在答案中添加了位置,但是每当我重新启动 docker 时,它都会重新创建 /var/lib/docker。当我执行ps aux | grep docker 时,我看到该进程没有配置文件中添加的-g /foo 参数。
        • 所以,-g 选项我确认有效。将-g /foo 插入docker.service 文件对我有用。这不是一个好的选择,因为更新可能会覆盖该文件。
        • 好吧,我发现:你必须用这个内容{ "data-root": "/my/path" }创建一个文件/etc/docker/daemon.json,然后重启docker。虽然你不会看到ps aux有任何变化,但是docker确实是这样使用/my/path的,如果你事先删除了旧的/var/lib/docker,它不会重新创建。
        猜你喜欢
        • 1970-01-01
        • 2019-01-26
        • 2019-02-08
        • 2021-02-07
        • 2018-07-26
        • 1970-01-01
        • 1970-01-01
        • 2018-09-01
        • 2014-09-24
        相关资源
        最近更新 更多