当前位置: 首页 > 知识库问答 >
问题:

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

曾阳飙
2023-03-14

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

共有3个答案

万浩淼
2023-03-14

对于新的docker版本,我们需要使用数据根,因为图形在v17中已被弃用。05.0:官方不推荐的文档

编辑/etc/docker/daemon.json(如果它不存在,则创建它)并包括:

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

然后用以下命令重新启动Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker
  • 有关使用Docker Storage和data root的更详细的分步说明(包括移动数据),请参见:Blog post
况经纬
2023-03-14

根据评论的建议,我使用Docker systemd留档来改进这个答案。下面的过程不需要重新启动,而且更干净。

首先为自定义配置创建目录和文件:

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo $EDITOR /etc/systemd/system/docker.service.d/docker-storage.conf

对于17.06-ce之前的docker版本,粘贴:

[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --graph="/mnt"

对于17.06-ce粘贴后的docker:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --data-root="/mnt"

我最近在Fedora 25上试用了17.09-ce的上述程序,但似乎不起作用。而不是在/etc/docker/daemon中进行简单的修改。json做这个把戏:

{
    "graph": "/mnt",
    "storage-driver": "overlay"
}

尽管您必须重新加载配置并重新启动Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

要确认Docker已重新配置:

docker info|grep "loop file"

在最新版本(17.03)中,需要不同的命令:

docker info|grep "Docker Root Dir"

输出应如下所示:

 Data loop file: /mnt/devicemapper/devicemapper/data
 Metadata loop file: /mnt/devicemapper/devicemapper/metadata

或者:

 Docker Root Dir: /mnt

然后您可以安全地删除旧的Docker存储

rm -rf /var/lib/docker
齐冥夜
2023-03-14

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

对于旧版本,在启动Docker守护程序时,可以使用-g选项更改Docker的存储基目录(容器和图像所在的位置)。(检查docker--help)。当Docker启动时,您可以通过将其添加到/etc/default/Docker来自动应用此设置

 类似资料:
  • 问题内容: 据我所知,泊坞窗映像在安装时即已安装。有没有办法更改此位置,例如更改为已安装的卷? 问题答案: 对于最新版本的Docker,您可以在中 (根据https://docs.docker.com/engine/reference/commandline/dockerd/#daemon- configuration- file )将参数的值设置为自定义路径。 对于较旧的版本,您可以在启动Doc

  • 问题内容: 我想创建一个docker镜像并正确安装,因此我选择具有这些属性的基础镜像。因此,的第一行如下: 然后下一个命令是 在创建docker映像时创建了以下错误: 如何能够在此docker映像中安装? 问题答案: 如提示: 获取(13:权限被拒绝) 我相信这是由于您的基本形象: https://github.com/SeleniumHQ/docker- selenium/blob/master

  • 问题内容: 我正在通过创建带有一些nodejs指令的来玩docker。现在,每次更改dockerfile时,我都会通过在项目文件夹中运行来重新创建映像,但这每次都会创建一个新映像,并很快吞没我的ssd。 更改dockerfile时,是否有一种方法可以更新现有映像,或者每次更改文件时都被迫创建一个新映像? 抱歉,这是一个愚蠢的问题 问题答案: 只要没有指令,Docker构建支持缓存。如果您正在积极地

  • 这是我第一次尝试创建Docker形象,我希望有人能帮助我。我的Dockerfile大致如下所示: 基本上,我只是为了扩展jar文件而安装Java。运行makefile时,出现以下错误: /bin/sh:1:/usr/lib/jvm/java-7-openjdk-amd64:权限被拒绝 我一直试图效仿这个例子:https://registry.hub.docker.com/u/barnybug/op

  • 我希望能够在SQL服务器Docker实例中运行一些交互式命令。因为我不熟悉bash,而且我有一些PowerShell知识,所以我会使用PowerShell Core。 如何在SQL Server docker映像上安装PowerShell Core?

  • 我是Docker的新手。我创建了以下Dockerfile并运行它: 来自Centos:最新的ENV container docker运行YUM-Y更新&&yum clean all 我收到以下错误/输出: root@ggnlabvm-juper6:~/docker_test#docker build-t test。 将构建上下文发送到Docker守护进程2.048 kB 步骤1/3:来自Cento