解決Docker根目錄切換與數據遷移

我們知道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
##遷移完成!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章