CentOS7修改Docker容器和镜像默认存储位置

本文介绍如何在CentOS7中更改Docker容器及镜像的默认存储位置,从/var/lib/docker迁移到自定义目录,以解决磁盘空间不足的问题。包括停止Docker服务、修改启动配置文件、转移现有数据等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文被帮助文档:

CentOS7修改Docker容器和镜像默认存储位置

通常,当你开始使用docker时,我们并不太关心Docker 用于存储镜像和容器的默认目录。当使用Docker进行更多实验时,Docker开始占用大量的空间时,你不得不按下紧急按钮。所以现在是时候把故障排除放在如何改变docker的默认存储位置了

在试图改变Docker的默认存储位置时,我们必须知道一些重要的信息。

docker 当前使用的默认存储位置
docker 当前使用的存储驱动程序
镜像和容器要存放的新存储空间

Docker 默认的位置在/var/lib/docker,当前所有的镜像、容器都存储在这儿。如果你有任何在运行的容器,停止这些容器,并确保没有容器在运行,然后运行以下命令,确定当前Docker使用的存储驱动。

1、查看docker当前信息

注:此处需要注意docker的两个信息:

  • Storage Driver: overlay2 当前Docker使用的存储驱动
  • Docker Root Dir: /var/lib/docker 当前docker使用的数据目录

docker info

[root@localhost ~]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 18.09.6
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: bb71b10fd8f58240ca47fbb579b9d1028eea7c84
runc version: 2b18fe1d885ee5083ef9f0838fee39b62d653e30
init version: fec3683
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-514.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 976.5MiB
Name: localhost.localdomain
ID: 3EGY:424H:ER2C:CBQ7:KUD5:SFRJ:TVDK:XV4Y:AFYJ:SOOL:7OM6:65K5
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine

2、停止docker服务

systemctl stop docker

3、修改docker服务启动文件

[root@localhost ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --graph=/mnt/docker

注意:

  • 原配置保持不变,添加–graph=/mnt/docker,/mnt/docker是新的存储位置

  • 以下两个文件均可修改docker配置:

/etc/systemd/system/multi-user.target.wants/docker.service
/usr/lib/systemd/system/docker.service

4、将原先目录下所有的文件和目录拷贝到新目录下

[root@localhost mnt]# cp -rf /var/lib/docker/* /mnt/docker/

[root@localhost docker]# pwd
/mnt/docker
[root@localhost docker]# ls
builder  buildkit  containers  image  network  overlay2  plugins  runtimes  swarm  tmp  trust  volumes

5、重新加载配置并启动

[root@localhost docker]#  systemctl daemon-reload
[root@localhost docker]# systemctl start docker

6、检查docker信息

[root@localhost docker]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 18.09.6
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: bb71b10fd8f58240ca47fbb579b9d1028eea7c84
runc version: 2b18fe1d885ee5083ef9f0838fee39b62d653e30
init version: fec3683
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-514.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 976.5MiB
Name: localhost.localdomain
ID: 3EGY:424H:ER2C:CBQ7:KUD5:SFRJ:TVDK:XV4Y:AFYJ:SOOL:7OM6:65K5
Docker Root Dir: /mnt/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine

注:

查看Docker Root Dir: /mnt/docker信息可看到,docker服务存储位置已修改

<think>好的,用户想修改Docker默认存储目录,我需要根据提供的引用资料系统级指令来回答这个问题。首先,我应该回顾用户提供的引用内容,看看有没有相关的信息。 引用[2]提到Docker存储管理需要合理配置,确保数据的安全性可靠性。引用[4]中的命令使用了-v参数挂载卷,但用户的问题是关于更改默认存储位置,而不是单个容器的卷配置。所以需要找到修改Docker守护进程配置的方法。 根据Docker的文档,默认存储目录通常是/var/lib/docker修改这个需要修改Docker的配置文件,通常是daemon.json。用户可能需要停止Docker服务,修改配置文件,然后重启服务。不过要注意数据迁移的问题,否则原有镜像容器可能无法访问。 另外,引用[1]提到默认未配置TLS认证,但这可能存储目录无关。引用[3]关于日志管理,可能不直接相关,但配置存储位置时可能需要考虑日志路径是否受影响。 需要确保步骤清晰,包括停止Docker服务、修改配置文件、迁移数据、重启服务等。同时提醒用户备份数据,避免数据丢失。可能还需要说明不同系统下的配置文件路径差异,比如UbuntuCentOS可能不同。 另外,生成的相关问题需要考虑用户可能的后续疑问,比如如何验证配置生效、迁移数据的具体方法、遇到权限问题怎么办,以及如何回滚配置。这些都需要涵盖在相关问题中。</think>### 如何修改Docker默认存储位置? #### **步骤说明** 1. **停止Docker服务** 修改存储目录前需先停止Docker服务,避免数据损坏: ```bash sudo systemctl stop docker ``` 2. **创建新存储目录** 选择目标路径(如 `/new/docker/path`)并确保目录存在且具有权限: ```bash sudo mkdir -p /new/docker/path sudo chmod -R 755 /new/docker/path ``` 3. **修改Docker配置文件** Docker通过 `daemon.json` 配置存储路径。若文件不存在则新建: ```bash sudo nano /etc/docker/daemon.json ``` 添加以下内容(假设新路径为 `/new/docker/path`): ```json { "data-root": "/new/docker/path" } ``` 4. **迁移旧数据(可选)** 若需保留原有镜像容器等数据,需手动迁移: ```bash sudo rsync -avz /var/lib/docker/ /new/docker/path/ ``` 5. **重启Docker服务** 应用配置并启动服务: ```bash sudo systemctl daemon-reload sudo systemctl start docker ``` 6. **验证配置** 检查Docker信息,确认存储路径已更新: ```bash docker info | grep "Docker Root Dir" ``` #### **注意事项** - **数据一致性**:未迁移旧数据时,新目录为空,原有镜像容器将不可用[^2]。 - **权限问题**:若新目录权限不足,Docker可能无法启动,需确保目录所有权为 `root:root`。 - **配置文件路径差异**: - Ubuntu/Debian: `/etc/docker/daemon.json` - CentOS/RHEL: `/etc/docker/daemon.json` #### **最佳实践** - **定期备份**:存储目录变更后,定期备份重要数据[^3]。 - **结合存储驱动**:根据文件系统类型(如 `overlay2`)调整存储驱动配置。 - **日志管理**:若日志路径依赖存储目录,需同步检查日志配置。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰哥的技术杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值