据我所知,当docker映像被拉出来时,它们被安装到/var/lib/docker中。是否有办法改变这个位置,比如到一个挂载的卷,比如/mnt?
当前回答
对于那些期待2020年的人。以下是针对Windows 10 Machine的:
在Hyper-V管理器的全局操作窗格中单击Hyper-V 设置… 下的“虚拟硬盘”更改位置 默认到您想要的位置。 在虚拟机下更改 从默认位置移到所需位置,然后单击应用。
单击“确定”关闭Hyper-V设置页面。
其他回答
根据评论中的建议,我利用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"
通过daemon.json的替代方法
我最近在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
Or:
Docker Root Dir: /mnt
然后你可以安全地删除旧的Docker存储:
rm -rf /var/lib/docker
在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使用我的新目录
因为我没有找到在Fedora中这样做的正确说明(编辑:人们在评论中指出,这也应该在CentOS和Suse上工作)(/etc/default/docker不被使用),我在这里添加我的答案:
您必须编辑/etc/sysconfig/docker,并在OPTIONS变量中添加-g选项。如果有多个选项,请确保将它们用“”括起来。在我的例子中,该文件包含:
OPTIONS=--selinux-enabled
所以它会变成
OPTIONS="--selinux-enabled -g /mnt"
重启后(systemctl restart docker), docker应该使用新的目录
例如,不要使用符号链接将docker文件夹移动到/mnt。 这可能会导致使用docker rm命令时出现问题。
docker最好使用-g选项。 在Ubuntu上,你可以在/etc/default/docker.io中永久设置它。增强或替换DOCKER_OPTS行。
这里有一个例子: “DOCKER_OPTS = " - g / 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 -如何将文件从镜像复制到主机?
- 如何防止docker在系统启动时自动启动容器?
- 什么是Docker映像“层”?
- 无法从docker-compose连接到docker
- Docker错误无法删除Docker容器,冲突:无法删除存储库引用
- 如何让容器在Kubernetes上运行?
- 如何备份docker容器的数据卷?
- Docker入口点运行bash脚本被“拒绝权限”
- 我如何复制Docker作为非根?
- 如何禁用容器上的自动重启?
- 如何传递参数到Dockerfile?
- 如何知道docker是否已经登录到docker注册服务器
- 为什么安装了Docker而没有安装Docker Compose?