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


当前回答

基于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容器之后更改目录的步骤。

注意,你不需要编辑docker。服务或init。D文件,因为它将从下面提到的.json文件中读取更改。

编辑/etc/docker/daemon.Json(如果它不存在,创建它) 添加以下内容

{
  "data-root": "/new/path/to/docker-data"
}

停止码头工人

sudo systemctl stop docker

检查码头已停止

ps aux | grep -i docker | grep -v grep

将文件复制到新位置

sudo rsync -axPS /var/lib/docker/ /new/path/to/docker-data

重新启动Docker

sudo systemctl start docker

检查Docker已使用新位置启动

docker info | grep 'Docker Root Dir'

检查一切已经启动,应该运行

docker ps

在服务器上保留两个副本几天,以确保没有问题出现,然后随意删除它。

sudo rm -r /var/lib/docker

在最新版本的Docker中,你可以将data-root参数的值设置为自定义路径,在/etc/docker/daemon.json中 (根据https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file)。

在旧版本中,你可以在启动Docker守护进程时使用-goption改变Docker的存储基本目录(容器和映像所在的目录)。(查看docker—help)。 当Docker启动时,您可以通过将其添加到/etc/default/docker来自动应用此设置

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

更简单的方法:

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