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

问题描述 投票:20回答:3

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

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

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

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

docker docker-volume
3个回答
13
投票

2017:与qazxsw poi,qazxsw poi弃用qazxsw poi旗支持或17.05.0-ce (2017-05-04)PR 28696

名称“--graph”是很久以前的遗留术语,当时曾经有一个目录位于默认位置--data-root

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

使用graph/var/lib/docker/graph,文档已更新。

graph

issue 5922

2016年(现已弃用)

我只知道更改PR 5978本身的docker选项,而不是它的子文件夹(Example的一部分)

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

Docker支持Docker数据目录(/var/lib/docker)和"graph" used by a docker daemon storage driver的软链接。 docker daemon "Miscellaneous options"和数据目录可以像这样设置:

/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 而异。


11
投票

您可以通过更改其中一个名为Where are docker images stored on the host machine?/var/lib/docker来更改Docker存储其文件(包括卷)的位置。

如果您使用systemd进行服务管理,则该文件通常位于on the driver Docker is using for storage。像这样编辑文件:

startup parameters

或者,您可以编辑Docker守护程序配置文件,默认为--data-root

重新启动Docker守护程序,您的卷将在/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安装按预期工作。

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


1
投票

我通过将/ var / lib / docker的内容移动到新位置然后放置一个指向新位置的符号链接来成功移动了docker的存储位置(我从这里获取此解决方案/etc/docker/daemon.json):

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

1)停止码头:/new_location/volumes/{volume_name}/_data。验证没有正在运行的docker进程:/var/lib/docker/

2)双重检查docker真的没有运行。看看当前的docker目录:https://askubuntu.com/questions/631450/change-data-directory-of-docker

2b)备份service docker stop

3)将/ var / lib / docker目录移动到新分区:ps aux | grep -i [d]ocker

4)制作一个符号链接:ls /var/lib/docker/

5)看一下目录结构,确保它看起来像是在mv:- tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz之前做的(注意尾部斜杠)

6)启动docker备份mv /var/lib/docker /mnt/pd0/docker

7)重启容器(解析符号链接)

在使用Docker 18.09.2的Azure VM上为Ubuntu 18.04.1 LTS工作

© www.soinside.com 2019 - 2024. All rights reserved.