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

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

killa_whale 2月前

122 0

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

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

帖子版权声明 1、本帖标题:如何更改docker镜像安装目录?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由killa_whale在本站《ubuntu》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 在 Docker v26.0.1 和 debian 12 上,通过更改 docker.service 文件中的属性。
    通常我会逐步使用这个答案: https://.com/a/56126715/22904257 但是有人提到标志'-g '不起作用(我无法重新启动服务)并且我像这样更改标志:

    ExecStart=/usr/bin/dockerd --data-root /my/path/for/containers -H fd:// --containerd=/run/containerd/containerd.sock
    
  • 对于那些在 2020 年寻找的人来说。以下内容适用于 Windows 10 机器:

    1. 在 Hyper-V 管理器的全局操作窗格中,单击 Hyper-VSettings…
    2. 在虚拟硬盘下,将位置从默认位置更改为您想要的位置。
    3. 在虚拟机下,将位置从默认位置更改为所需位置,然后单击应用。

    enter image description here

    1. 单击“确定”关闭“Hyper-V 设置”页面。
  • 您可以尝试在您喜欢的位置重新安装docker。镜像和docker文件是独立的。

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

  • 在 AWS Ubuntu 16.04 服务器上,我将 Docker 镜像放在单独的 EBS 上,安装在 /home/ubuntu/kaggle/ 上,位于 docker 目录下

    我的初始化脚本的这个片段运行正常

    # where are the images initially stored?
    sudo docker info | grep "Root Dir"
    # ... not where I want them
    
    # modify the configuration files to change to image location
    # NOTE this generates an error
    # WARNING: Usage of loopback devices is strongly discouraged for production use.
    #          Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
    # see https://.com/questions/31620825/
    #     warning-of-usage-of-loopback-devices-is-strongly-discouraged-for-production-use
    
    sudo sed -i   ' s@#DOCKER_OPTS=.*@DOCKER_OPTS="-g /home/ubuntu/kaggle/docker"@ '  /etc/default/docker
    
    sudo chmod -R ugo+rw /lib/systemd/system/docker.service
    sudo cp  /lib/systemd/system/docker.service /etc/systemd/system/
    sudo chmod -R ugo+rw /etc/systemd/system/
    
    sudo sed -i ' s@ExecStart.*@ExecStart=/usr/bin/dockerd $DOCKER_OPTS -H fd://@ '  /etc/systemd/system/docker.service
    sudo sed -i '/ExecStart/a EnvironmentFile=-/etc/default/docker' /etc/systemd/system/docker.service
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    sudo docker info | grep "Root Dir"
    # now they're where I want them
    
  • 在 Fedora 26 以及可能许多其他版本上,您可能会在如上所述移动基本文件夹位置后遇到错误。如果您将其移动到 /home 下的某个位置,则尤其如此。这是因为 SeLinux 启动并阻止 docker 容器从此位置运行其许多程序。

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

  • 在 openSUSE Leap 42.1 上

    $cat /etc/sysconfig/docker 
    ## Path           : System/Management
    ## Description    : Extra cli switches for docker daemon
    ## Type           : string
    ## Default        : ""
    ## ServiceRestart : docker
    #
    DOCKER_OPTS="-g /media/data/installed/docker"
    

    请注意,DOCKER_OPTS 最初是空的,我所做的只是添加参数以使 docker 使用我的新目录

  • 我使用的是 docker 版本 19.03.14。以下链接对我有帮助。

    检查此链接

    在 /etc/docker/daemon.json 文件中我添加了以下部分:-

     {
        "data-root": "/hdd2/docker",
        "storage-driver": "overlay2"
     }
    
  • @suther:可能?现在有没有遇到麻烦的情况?对于技术文档来说,可能有点不精确,如果我遇到问题,那么我想知道具体什么时候发生,问题是如何引起的,以及结果会如何。

  • 不要创建软链接。原因请参见我之前发表的评论...您可能会遇到“docker rm”命令的问题!

  • 一个更简单的解决方案是创建一个软链接指向你想要的任何内容,例如

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

    它在我的 CentOS 6.5 服务器上运行良好。

  • 引用 13

    正如@mbarthelemy 所建议的,这可以通过 -g 直接启动 docker 守护进程时的选项来完成。

    但是,如果 docker 作为系统服务启动,则不建议修改该 /etc/default/docker 这里 有一个指南 .

    在 Linux(或 Mac)系统或 /etc/docker/daemon.json 创建一个 %programdata%\docker\config\daemon.json 。如果此文件不用于其他用途,则以下字段就足够了:

    {
        "graph": "/docker/daemon_files"
    }
    

    这里假设你想让docker保存数据的新位置是 /docker/daemon_files

  • Linux 指南的安装后步骤 ,官方的做法 如下:

    1. p1

       sudo systemctl edit docker.service
    2. p2

       [Service] ExecStart= ExecStart=/usr/bin/dockerd --graph="/mnt/docker"

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

    1. p4

       sudo systemctl daemon-reload
    2. p5

       sudo systemctl restart docker.service

    此后,如果您可以删除 /var/lib/docker 文件夹(如果其中没有任何需要备份的图像)。

  • 如果您按照 Debian 的最新 docker 安装说明操作,您会获得 SysVinit 脚本,但它们不会被使用。请参阅 github.com/docker/docker/issues/9889#issuecomment-109766580

  • /etc/default/docker 下没有文件 /etc/sysconfig/docker ,并且您的系统正在运行 systemd,您可能需要遵循 h3nrik 的这个答案 。我正在使用 Arch,这对我来说很有效。

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

    为了完整起见,这里是 h3nrick 的回答:


    你有 /lib/systemd/system/docker.service 文件吗?

    如果是这样,请编辑它以便 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 .

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

  • 这篇 博文对 我有帮助

    即使在创建 Docker 容器等之后,也要执行以下步骤来更改目录。

    请注意,您不需要编辑 docker.service init.d 下面提到的文件 .json 中读取更改

    1. p3

    2. p4

    {
      "data-root": "/new/path/to/docker-data"
    }
    
    1. 停止docker
    sudo systemctl stop docker
    
    1. 检查docker是否已经停止
    ps aux | grep -i docker | grep -v grep
    
    1. 将文件复制到新位置
    sudo rsync -axPS /var/lib/docker/ /new/path/to/docker-data
    
    1. 启动 Docker 备份
    sudo systemctl start docker
    
    1. 检查 Docker 是否已使用新位置启动
    docker info | grep 'Docker Root Dir'
    
    1. 检查所有应运行的程序是否已启动
    docker ps
    
    1. 将两个副本保留在服务器上几天,以确保不会出现任何问题,然后随意删除它。
    sudo rm -r /var/lib/docker
    
  • daemon.json 中的 graph 属性从 v17.05.0 开始已弃用,请改用 data-root,参见 .com/a/50217666/743507

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

    创建仅包含以下内容的文件:

    $ sudo vi /etc/docker/daemon.json

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

    在 docker Ubuntu 16.04.2 LTS 上测试 1.12.6

  • 在 CentOS 6.5 中

    service docker stop
    mkdir /data/docker  (new directory)
    vi /etc/sysconfig/docker
    

    添加以下行

    other_args=" -g /data/docker -p /var/run/docker.pid"
    

    然后保存文件并再次启动docker

    service docker start
    

    并将在 /data/docker

返回
作者最近主题: