这篇文章主要介绍了怎么给容器服务的Docker增加数据盘,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
Docker 的数据是通过联合文件系统的方式存储到磁盘上,当需要在机器上运行的容器或者镜像的数量不断增加时,有可能磁盘的大小不再满足需求,这个时候就需要通过增加数据盘的方式,给 Docker的数据目录可存储的空间进行扩容。
Docker 数据目录
Docker默认的容器和镜像数据存储的目录是在 /var/lib/docker 下,可以通过 du 命令查看这个目录目前占用的磁盘的大小,例如:
du -h --max-depth=0 /var/lib/docker
7.9G /var/lib/docker
更换Docker的数据盘
因为很多 Docker 的镜像很大,所以可能几个镜像就占用很大的磁盘空间,从而导致磁盘空间不足,通过为 Docker 的数据目录增加数据盘的方式,可以满足继续增加镜像或容器的需求。
购买ECS数据盘,并挂载到需要扩容的机器上
登录 云服务器 ECS 控制台,购买相应配置的云盘。
单击 ECS实例详情页 > 本实例磁盘 > 挂载磁盘,选择刚才购买的磁盘,并记录挂载点 /dev/xvd*
或者 /dev/vd*
。根据 cd 命令确定挂载点,IO 优化实例的挂载点是 /dev/vd*
。
登录到机器上,对刚才挂载的磁盘进行格式化
首先在机器上执行 ls -l /dev/xvd*
或者 ls -l /dev/vd*
看到和刚才记录的一致的磁盘ID。
通过 fdisk 命令对磁盘进行分区,然后使用 mkfs.ext4
格式化磁盘,具体请参见 Linux 格式化和挂载数据盘,例如:
root@iZbp16h2ijt5er5wempg4sZ:~# ls -l /dev/vd*
brw-rw---- 1 root disk 253, 0 Jan 5 17:44 /dev/vda
brw-rw---- 1 root disk 253, 1 Jan 5 17:44 /dev/vda1
brw-rw---- 1 root disk 253, 16 Jan 5 17:55 /dev/vdb
root@iZbp16h2ijt5er5wempg4sZ:~# fdisk -S 56 /dev/vdb
Welcome to fdisk (util-linux 2.27.1).
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.
Created a new DOS disklabel with disk identifier 0x44e128c4.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039):
Created a new partition 1 of type 'Linux' and of size 20 GiB.
Command (m for help): wq
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
root@iZbp16h2ijt5er5wempg4sZ:~# ll /dev/vd*
brw-rw---- 1 root disk 253, 0 Jan 5 17:44 /dev/vda
brw-rw---- 1 root disk 253, 1 Jan 5 17:44 /dev/vda1
brw-rw---- 1 root disk 253, 16 Jan 5 17:58 /dev/vdb
brw-rw---- 1 root disk 253, 17 Jan 5 17:58 /dev/vdb1 ##新增分区
root@iZbp16h2ijt5er5wempg4sZ:~# mkfs.ext4 /dev/vdb1 ##格式化
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 5242624 4k blocks and 1310720 inodes
Filesystem UUID: cef1625c-7533-4308-bc44-511580e3edc8
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
移动 Docker 的数据到新的磁盘
首先先停止 Docker daemon,保证移动的时候数据完整,执行 service docker stop 命令停止 Docker daemon。
先将 Docker 默认数据目录下的数据移动到一个备份的目录,例如 /var/lib/docker_data,执行命令 mv /var/lib/docker /var/lib/docker_data。
然后把新的格式化好的磁盘挂载到 /var/lib/docker 目录,执行命令 echo "/dev/vdb1 /var/lib/docker ext4 defaults 0 0" >>/etc/fstab && mkdir /var/lib/docker && mount -a。
把之前备份的 Docker 数据移动到新的磁盘上,执行命令 mv /var/lib/docker_data/* /var/lib/docker/。
启动 Docker daemon,并检查数据位置
启动 Docker daemon,执行命令 service docker start。
执行命令 df,可以看到 /var/lib/docker 挂载到了新的磁盘上。
root@iZbp16h2ijt5er5wempg4sZ:/# df -h
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 396M 7.1M 389M 2% /run
/dev/vda1 40G 2.7G 35G 8% /
tmpfs 2.0G 476K 2.0G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs 396M 0 396M 0% /run/user/0
/dev/vdb1 20G 2.1G 17G 12% /var/lib/docker ##该目录挂在到新的磁盘上
....
执行命令 docker ps,查看容器是否丢失,根据需要重启相关容器,如没有设置 restart:always
标签的容器。
感谢你能够认真阅读完这篇文章,希望小编分享的“怎么给容器服务的Docker增加数据盘”这篇文章对大家有帮助,同时也希望大家多多支持天达云,关注天达云行业资讯频道,更多相关知识等着你来学习!