我們知道docker安裝之後默認的服務數據存放根路徑爲/var/lib/docker目錄下,var目錄默認使用的是根分區的磁盤空間;所以這是非常危險的事情;隨着我們鏡像、啓動的容器實例開始增多的時候,磁盤所消耗的空間也會越來越大,所以我們必須要做數據遷移和修改docker服務的默認存儲位置路徑;有多種方式是可以修改docker默認存儲目錄路徑的,但是最好是在docker安裝完成後,第一時間便修改docker的默認存儲位置路徑爲其他磁盤空間較大的目錄(一般企業中爲/data目錄),規避遷移數據過程中所造成的風險。
1)首先我們準備一塊空間充足的磁盤進行分區、格式化、掛載
[root@docker ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xad62b6a2.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): +50G
Partition 1 of type Linux and of size 50 GiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@docker ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3276800 inodes, 13107200 blocks
655360 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2162163712
400 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@docker ~]# partprobe
[root@docker ~]# mkdir /data/docker/lib/ -pv
mkdir: created directory ‘/data/docker’
mkdir: created directory ‘/data/docker/lib/’
[root@docker ~]# vim /etc/fstab
/dev/sdb1 /data/docker/lib/ ext4 defaults 0 0
[root@docker ~]# df -h | grep "sdb1"
/dev/sdb1 50G 53M 47G 1% /data/docker/lib
2)遷移數據到新目錄
[root@docker ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.126.155/test/httpd v0.1 7d85cc3b2d80 2 weeks ago 154MB
httpd latest 7d85cc3b2d80 2 weeks ago 154MB
httpd v0.1 7d85cc3b2d80 2 weeks ago 154MB
[root@docker ~]# systemctl stop docker
[root@docker ~]# rsync -avz /var/lib/docker/ /data/docker/lib/
[root@docker ~]# ls /data/docker/lib/
builder containers lost+found overlay2 runtimes tmp volumes
buildkit image network plugins swarm trust
[root@docker ~]#
3)創建docker的配置文件
[root@docker ~]#
[root@docker ~]# mkdir -p /etc/systemd/system/docker.service.d/
[root@docker ~]# vim /etc/systemd/system/docker.service.d/devicemapper.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/data/docker/lib/
[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl restart docker
[root@docker ~]# docker info | grep "Dir"
Docker Root Dir: /data/docker/lib
[root@docker ~]#
[root@docker ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.126.155/test/httpd v0.1 7d85cc3b2d80 2 weeks ago 154MB
httpd latest 7d85cc3b2d80 2 weeks ago 154MB
httpd v0.1 7d85cc3b2d80 2 weeks ago 154MB
[root@docker ~]# df -h |grep "sdb1"
/dev/sdb1 50G 2.8G 44G 6% /data/docker/lib
##遷移完成!!!