据我所知,当docker映像被拉出来时,它们被安装到/var/lib/docker中。是否有办法改变这个位置,比如到一个挂载的卷,比如/mnt?


当前回答

在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使用我的新目录

其他回答

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

该解决方案适用于Red Hat 7.2和Docker 1.12.0

编辑文件 /lib/systemd/system/docker.服务。

在ExecStart指令的末尾添加-g /path/to/docker/。完整的直线应该是这样的。

ExecStart=/usr/bin/dockerd -g /path/to/docker/

执行以下命令

systemctl daemon-reload
systemctl restart docker

执行命令查看docker目录

docker info | grep "loop file\|Dir"

如果您在Red Hat或docker 1.7.1中有/etc/sysconfig/docker文件,请检查这个答案。

基于Linux安装后步骤指南和我在web爬行时发现的官方方法如下:

覆盖docker服务配置文件: Sudo systemctl编辑docker.service 添加或修改以下行,替换您自己的值。 (服务) ExecStart = ExecStart = / usr / bin / dockerd——图=“/ mnt /码头工人”

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

重新加载systemctl配置。 Sudo systemctl daemon-reload 重启码头工人。 Sudo systemctl restart docker.service

在这之后,如果你可以核化/var/lib/docker文件夹,如果你没有任何映像,你可以备份。

更简单的方法:

停止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

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

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

正确的方法是创建/etc/docker/daemon.json文件在Linux(或Mac)系统或%programdata%\docker\config\daemon。json。如果这个文件没有被用于其他用途,那么以下字段就足够了:

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

这是假设你想让docker持久化它的数据的新位置是/docker/daemon_files