通常,当你开始使用docker时,我们并不太关心Docker 用于存储镜像和容器的默认目录。当使用Docker进行更多实验时,Docker开始占用大量的空间时,你不得不按下紧急按钮。所以现在是时候把故障排除放在如何改变docker的默认存储位置了
在试图改变Docker的默认存储位置时,我们必须知道一些重要的信息。
docker 当前使用的默认存储位置
docker 当前使用的存储驱动程序
镜像和容器要存放的新存储空间
Docker 默认的位置在/var/lib/docker,当前所有的镜像、容器都存储在这儿。如果你有任何在运行的容器,停止这些容器,并确保没有容器在运行,然后运行以下命令,确定当前Docker使用的存储驱动。
查看docker当前信息
- Storage Driver: overlay2 当前Docker使用的存储驱动
- Docker Root Dir: /var/lib/docker 当前docker使用的数据目录
docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
scan: Docker Scan (Docker Inc., v0.8.0)
Server:
Containers: 8
Running: 7
Paused: 0
Stopped: 1
Images: 53
Server Version: 20.10.7
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: d71fcd7d8303cbf684402823e425e9dd2e99285d
runc version: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1160.31.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 31.26GiB
Name: nsg.novalocal
ID: NQPU:DLYX:KYYX:H6QQ:CECE:MZS4:VGOW:HPX3:Q65I:ZJ3K:5SGQ:N2FP
Docker Root Dir: /var/lib/docker
Debug Mode: false
Username: bongmu
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
192.168.10.82:5000
127.0.0.0/8
Live Restore Enabled: false
Default Address Pools:
Base: 172.18.0.0/24, Size: 24
Base: 172.18.1.0/24, Size: 24
Base: 172.18.2.0/24, Size: 24
Base: 172.18.3.0/24, Size: 24
停止docker服务
systemctl stop docker
修改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
将原先目录下所有的文件和目录拷贝到新目录下
[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
重新加载配置并启动
[root@localhost docker]# systemctl daemon-reload
[root@localhost docker]# systemctl restart docker
docker info