前言

Vmware 虚拟机开机时提示:虚拟机根目录系统内存不足,可能原因是 /var/lib/docker 目录占用的磁盘空间不够了。本文记录虚拟机磁盘扩容过程和修改 docker 默认的存储位置。

在这里插入图片描述

在这里插入图片描述

一、Centos7虚拟机硬盘扩容

1.1 具体步骤

  1. 打开虚拟机设置 ->点击硬盘 -> 添加 ->硬盘 -> 选择SCSI(推荐) -> 创建新虚拟磁盘(V)

在这里插入图片描述
输入最大磁盘大小 40G -> 点击下一步

默认指定磁盘文件后点击完成即可
在这里插入图片描述

重启虚拟机 -> 输入命令查看添加的磁盘信息,扩展完成

fdisk -l

在这里插入图片描述

二、修改Docker默认存储位置

2.1 挂载目录

2.1.1 接下来是给磁盘进行分区输入如下命令:

fdisk /dev/sdb

我们可以使用m:显示所有命令,或者p:显示分区情况。接着,依次输入,n,p,1和两个回车,最后w保存退出即可。其中各个参数的含义如下:

  • n:设定一个新的分区
  • e:就是(extend)扩展分区
  • p:就是(primary)主要分区,我们这里选择P
  • 1-4:是分区编号,1到4都可以
  • w:保存
[root@localhost huang.bx]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x463180ea 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-83886079,默认为 2048)##回车即可
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-83886079,默认为 83886079)##回车即可
将使用默认值 83886079
分区 1 已设置为 Linux 类型,大小设为 40 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

2.1.2 完成后,再次使用 fdisk -l 查看是否分区成功

[root@localhost huang.bx]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2621440 inodes, 10485504 blocks
524275 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2157969408
320 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

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

2.1.3 完成后,将分区挂载到新创建的目录

mkdir -p /data/expand
mount /dev/sdb1 /data/expand

2.1.4 接下来使用命令,查看挂载的情况

[root@localhost data]# df -h | grep dev/sdb1
/dev/sdb1                 40G   49M   38G    1% /data/expand

2.2.5 可以看到,该分区已经被挂载到了对应的目录。到目前为止,已经算是硬盘挂载完成,但是如果想要重启设备后挂载依旧生效,需要将挂载的信息写入文件 /etc/fstab 文件中。主要不要更改其他的内容。

在这里插入图片描述

2.2.6 reboot 重启虚拟机再次查看挂载情况,可以看到已经成功的永久挂载了

[root@localhost huang.bx]# df -h | grep dev/sdb1
/dev/sdb1                 40G   49M   38G    1% /data/expand

2.2 修改路径

2.2.1 首先查看docker的存储的根路径

[root@localhost huang.bx]# docker info | grep "Docker Root Dir"
Docker Root Dir: /var/lib/docker

.2.2.2 可以看到目前Docker的路径为/var/lib/docker。接下来,需要将其更换到扩展了磁盘的/data/expand中。首先,关停docker。

systemctl stop docker

.2.2.3 接着移动docker的文件到新目录下:mv /var/lib/docker/ /data/expand/,这一步需要等待一定的时间。完成后修改docker配置文件,设置默认存储的目录。然后使用命令,vim /usr/lib/systemd/system/docker.service,在尾部增加如下命令。

--graph /data/expand/docker/

在这里插入图片描述

2.2.4 重启 docker 查看容器

[root@localhost overlay2]# systemctl start docker 
[root@localhost overlay2]# docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                                                                                  NAMES
3e97f4e59d4e   nginx:1.10            "nginx -g 'daemon of…"   4 months ago    Up 5 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp                                             nginx
7d802c4f0eb0   kibana:7.4.2          "/usr/local/bin/dumb…"   9 months ago    Up 5 minutes   0.0.0.0:5601->5601/tcp, :::5601->5601/tcp                                              kibana
21fddd211b43   elasticsearch:7.4.2   "/usr/local/bin/dock…"   9 months ago    Up 5 minutes   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp   elasticsearch
44edbbd9c776   redis                 "docker-entrypoint.s…"   18 months ago   Up 5 minutes   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                                              redis
d8b5351369dd   mysql:5.7             "docker-entrypoint.s…"   18 months ago   Up 5 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   

2.2.5 查看 docker 挂载

[root@localhost overlay2]# docker info | grep "Docker Root Dir"
 Docker Root Dir: /data/expand/docker
[root@localhost overlay2]# 
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐