如何更改“docker create volume”命令的默认位置?

时间:2016-03-15 14:47:53

标签: docker docker-volume

通过卷API创建卷时,也就是说,容器卷模式现在不再是最佳实践了:

# docker volume inspect test-data
[
    {
        "Name": "test-data",
        "Driver": "local",
        "Mountpoint": "/var/lib/docker/volumes/test-data/_data"
    }
]

例如,我想在/ data中存在docker卷(它安装在不同的物理卷中)。

这不可能与符号链接有关,可以使用绑定挂载,但是我想知道Docker中是否有一些配置来更改每个单独卷的默认位置。

4 个答案:

答案 0 :(得分:12)

2017:使用17.05.0-ce (2017-05-04)PR 28696弃用--graph标记为赞成或--data-rootcommit 1ecaed0

  

名称“graph”是很久以前的遗留术语,当时曾经是默认位置/var/lib/docker/graph的目录。

     

但是,该标志将指示“graph”目录的父目录的路径,该目录不仅包含图像数据,还包含卷,容器和网络的数据。   在最新版本的docker中,此目录还包含swarm集群状态和节点证书。

使用issue 5922PR 5978,文档已更新。

Example

ExecStart=/usr/bin/dockerd -H fd:// --data-root=/mnt/ssd/lib/docker

2016(现已弃用)

我只知道更改/var/lib/docker本身的docker选项,而不是其子文件夹("graph" used by a docker daemon storage driver的一部分)

请参阅docker daemon "Miscellaneous options"

  

Docker支持Docker数据目录(/var/lib/docker)和/var/lib/docker/tmp的软链接。
  DOCKER_TMPDIR数据目录可以像这样设置:

DOCKER_TMPDIR=/mnt/disk2/tmp /usr/local/bin/docker daemon -D -g /var/lib/docker -H unix:// > /var/lib/docker-machine/docker.log 2>&1
# or
export DOCKER_TMPDIR=/mnt/disk2/tmp
/usr/local/bin/docker daemon -D -g /var/lib/docker -H unix:// > /var/lib/docker-machine/docker.log

如“Where are docker images stored on the host machine?”中所述(这也适用于容器/卷):

  

/var/lib/docker目录的内容因on the driver Docker is using for storage而异。

答案 1 :(得分:10)

您可以通过更改其名为new String(code.decodeBase64()) 的{​​{3}}之一来更改Docker存储文件(包括卷)的位置。

如果您使用systemd进行服务管理,则文件通常位于--data-root。像这样编辑文件:

/lib/systemd/system/docker.service

或者,您可以编辑默认为# Old - taken from the generated docker.service file in Ubuntu 16.04's docker.io package ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS # New ExecStart=/usr/bin/dockerd --data-root /new_location/ -H fd:// $DOCKER_OPTS 的Docker守护程序配置文件。

重新启动Docker守护程序,您的卷将位于/etc/docker/daemon.json

注意:在生产中以及在本地要小心!您还必须将现有数据从/new_location/volumes/{volume_name}/_data移到新位置,以使docker安装能够按预期进行。

如果希望将特定文件夹放置在特定位置,则可以使用新位置的符号链接。

答案 2 :(得分:0)

通过将/ var / lib / docker的内容移动到新位置,然后放置指向新位置的符号链接,我成功移动了docker的存储位置(我从这里https://askubuntu.com/questions/631450/change-data-directory-of-docker获得了此解决方案):

  

警告-这些步骤取决于您当前的/ var / lib / docker   实际目录(不是指向其他位置的符号链接)。

     

1)停止docker:service docker stop。确认没有docker进程正在运行:   ps aux | grep -i [d]ocker

     

2)仔细检查docker确实没有运行。看一下当前的docker目录:   ls /var/lib/docker/

     

2b)备份- tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz

     

3)将/ var / lib / docker目录移动到新分区:   mv /var/lib/docker /mnt/pd0/docker

     

4)建立符号链接:ln -s /mnt/pd0/docker /var/lib/docker

     

5)看一下目录结构,以确保它看起来像   它在mv之前执行过:ls /var/lib/docker/(请注意斜杠)

     

6)启动docker备份service docker start

     

7)重新启动容器(解决符号链接)

在具有Docker 18.09.2的Azure VM上的Ubuntu 18.04.1 LTS上为我工作

答案 3 :(得分:0)

如果您使用的是Fedora(已通过32测试),只需将具有所需路径的--data-root标志更改或添加到OPTIONS上的/etc/sysconfig/docker变量,这就是使用的环境文件通过systemd启动dockerd服务。