欢迎访问宙启技术站
智能推送

如何修改Docker默认镜像和容器的存储位置

发布时间:2023-05-17 10:05:34

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 的默认存储位置更改为其他位置。但是,请注意,在更改存储位置之前,请确保您已备份了所有重要的数据,以免意外丢失。