如何修改Docker默认镜像和容器的存储位置
Docker 是目前领先的容器化平台,使用 Docker 可以方便地创建,部署和运行容器。Docker 默认情况下,将镜像和容器存储在本地文件系统中,这个位置通常是 /var/lib/docker。但有时,您可能需要在其他位置存储它们。例如,如果您有一个小容量的根分区,您可以将 Docker 存储在另一个分区中,以免耗尽磁盘空间。本文将介绍如何修改 Docker 默认镜像和容器的存储位置。
1. 修改 Docker 存储位置
要修改 Docker 默认存储位置,您需要编辑 Docker 的 systemd unit 文件。您可以通过以下命令找到该文件:
$ systemctl status docker.service
输出应该为:
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-06-17 02:47:41 UTC; 6 days ago
Docs: https://docs.docker.com
Main PID: 5839 (dockerd)
Tasks: 12
Memory: 27.9M
CPU: 2.509s
CGroup: /system.slice/docker.service
├─5839 /usr/bin/dockerd
└─5846 docker-containerd -l /var/run/docker/libcontainerd/docker-containerd.sock --runtime docker-runc --start-timeout 2m
使用 vim 编辑器修改该文件:
$ sudo vim /usr/lib/systemd/system/docker.service
找到 ExecStart 行,该行应如下所示:
ExecStart=/usr/bin/dockerd
在此行后添加 -g 参数,用于指定 Docker 存储位置。例如,如果您想将 Docker 存储在 /mnt/docker 目录下,您需要将该行修改为:
ExecStart=/usr/bin/dockerd -g /mnt/docker
保存并关闭文件。接下来,重新加载 systemd 配置并重新启动 Docker 服务:
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
现在 Docker 的默认存储位置应该已更改为 /mnt/docker。
2. 修改 Docker 镜像存储位置
如果您想将 Docker 镜像存储在不同的位置,您可以使用 DOCKER_IMGAE_ROOT 环境变量来指定它。要更改 Docker 镜像的存储位置,可以按照以下步骤操作:
在 /etc/environment 文件中添加以下内容:
DOCKER_IMAGE_ROOT=/mnt/docker-images
保存并关闭文件。重新启动终端或重新登录以使更改生效。
现在,所有新的 Docker 镜像将保存在 /mnt/docker-images 目录下。
3. 修改 Docker 容器存储位置
Docker 容器默认存储在 /var/lib/docker/containers 目录下。要将容器存储在不同的位置,可以通过 --graph 选项指定目录。要更改 Docker 容器的存储位置,可以按照以下步骤操作:
停止 Docker 服务:
$ sudo systemctl stop docker
将 /var/lib/docker/containers 目录复制到新位置。例如,使用以下命令将容器目录复制到 /mnt/docker-containers 目录下:
$ sudo cp -a /var/lib/docker/containers /mnt/docker-containers
编辑 /etc/docker/daemon.json 文件并指定容器存储目录。如果该文件不存在,则需要创建它并添加以下内容:
{
"graph": "/mnt/docker-containers"
}
保存并关闭文件。
启动 Docker 服务:
$ sudo systemctl start docker
现在,所有新的 Docker 容器将保存在 /mnt/docker-containers 目录下。
总结
通过指定选项或环境变量,您可以将 Docker 的默认存储位置更改为其他位置。但是,请注意,在更改存储位置之前,请确保您已备份了所有重要的数据,以免意外丢失。
