扩展Docker默认数据目录


#### 关机   添加硬盘   
#--- 以虚拟机为例

image-20240911212052046

image-20240911212119343

fdisk命令详解

fdisk 对 MBR 分区表的支持较好,但对于较大硬盘和 GPT 分区表,推荐使用 parted 或 gdisk
 Linux 系统中用于管理磁盘分区的命令行工具。
 它允许用户查看、创建、删除、修改磁盘分区表,
 可以用于处理 MBR (Master Boot Record) 和 GPT (GUID Partition Table) 分区表。
 
 fdisk [选项] <设备文件>

常用选项:
-l:列出系统中所有磁盘及其分区信息。
-u:显示分区表时使用扇区单位,而不是传统的柱面/磁头/扇区 (CHS) 单位。
-s <分区>:显示指定分区的大小(单位为块)。
-n:创建新分区。
-d:删除分区。

## 常见的使用场景
1.查看磁盘分区信息:列出系统中所有磁盘及其分区信息,包括磁盘大小、分区大小、分区类型等
fdisk -l


2.查看特定磁盘的分区信息:显示 /dev/sda 这个设备的分区详细信息。
fdisk -l /dev/sda
##  重要
3.进入交互模式管理分区:
输入命令会进入交互式操作环境,用户可以根据提示进行分区操作,如创建、删除、修改分区等。
fdisk /dev/sda

m:显示帮助信息。
p:打印当前分区表。
n:创建新分区。
d:删除分区。
t:更改分区类型(如将分区设为 Linux 文件系统、交换分区等)。
w:将更改写入磁盘并退出。
q:退出而不保存更改。
v:验证分区表是否有错误。

实战添加硬盘

拓展 扇区的意思
## PS: 扇区的解释
扇区(Sector)是磁盘存储中的最小物理存储单位。每个磁盘被划分为多个扇区,计算机在读写磁盘数据时以扇区为单位进行操作。通常,一个扇区的大小为 **512 字节**,不过在现代硬盘中,扇区的大小也可能是 **4096 字节**,特别是在高容量的硬盘上。

### 扇区的作用和结构
- **作用**:扇区是磁盘存储的基础单元,数据被存储在磁盘的扇区中,当操作系统需要读取或写入数据时,它会指定某个扇区及其相应的偏移量。
- **结构**:磁盘由多个物理盘片组成,每张盘片分为多个**磁道**(Tracks),磁道被进一步划分为多个扇区。因此,每个扇区代表磁道上的一个小片段。

### 扇区在分区中的作用
在硬盘分区时,工具如 `fdisk` 会要求用户指定**起始扇区**和**结束扇区**,这些扇区定义了分区在磁盘上的范围。
- **起始扇区**:分区的开始位置。
- **结束扇区**:分区的结束位置。
- **扇区编号**:硬盘上的扇区是按照顺序编号的,例如 2048、4096 等,每个扇区都有唯一的编号,操作系统通过这些编号来定位数据。

### 为什么起始扇区通常是 2048?
在现代硬盘分区中,起始扇区常从 **2048** 开始,这是为了确保数据对齐,提高性能,
尤其是对于支持 4KB 扇区大小的硬盘(也称为 **Advanced Format** 硬盘)。
早期的硬盘常以 **63 扇区** 为默认起始扇区,但为了与新硬盘格式兼容,2048 扇区成为更通用的选择。

### 总结:
- **扇区** 是磁盘上的最小存储单位,通常为 512 字节或 4096 字节。
- 分区工具如 `fdisk` 会要求指定分区的起始和结束扇区,这些扇区定义了分区在磁盘上的物理位置。
- 起始扇区通常从 2048 开始,以确保数据对齐并提高硬盘性能。

增加磁盘

#### 查看一下当前环境硬盘
[root@docker01 ~]# fdisk -l

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009a513
。。。。

### 进入交互模式管理分区 /dev/sdb
[root@docker01 ~]# fdisk /dev/sdb
Command (m for help): n     ### 选项  n 进行分区管理
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p   ### p 进行分区 e 拓展分区
Partition number (1-4, default 1): 1   ### 选择分区号  默认1
First sector (2048-41943039, default 2048): 2048  ### 系统提示你选择分区的起始扇区。起始扇区默认为 2048
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): #### 设置结束扇区或分区大小 默认的结束扇区是 41943039,这使分区大小为 20 GiB,你也接受了默认值
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set

Command (m for help): w  ### 选择w保存更改 并退出
The partition table has been altered!

### 查询磁盘
root@docker01 ~]# fdisk -l

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x127d0221

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux   ### 新磁盘

Disk /dev/sda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009a513

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    20971519     9972736   8e  Linux LVM



### 进行格式化
分区创建之后,你需要格式化它才能使用。假设新分区是 /dev/sdb,你可以使用以下命令将它格式化为 xfs 文件系统
mkfs.xfs /dev/sdb1


### 进行挂载
创建挂载目录
mkdir /docekr_file
1 --- 临时挂载
mount  /dev/sdb1 /docekr_file

2 --- 永久挂载
查看分区的UUID
[root@docker01 ~]# blkid /dev/sdb1
/dev/sdb1: UUID="b448b2a8-4f30-4f82-8e6f-f55292cb4da5" TYPE="xfs" 

写入挂载文件
UUID=b448b2a8-4f30-4f82-8e6f-f55292cb4da5  /docker_file   xfs defaults 0 0

或者
mount -a

### 查看
[root@docker01 /]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 979M     0  979M   0% /dev
tmpfs                    991M  9.6M  981M   1% /run
tmpfs                    991M     0  991M   0% /sys/fs/cgroup
/dev/mapper/centos-root  8.5G  4.8G  3.8G  56% /
/dev/sda1                497M  131M  367M  27% /boot
/dev/sdb1                 20G   33M   20G   1% /docker_file

更换docker的存储目录

提示:
更改数据目录前要提前备份不然以前的文件不存在 !!!! 
### docker info 查看默认的存储目录
[root@docker01 ~]# docker info | grep 'Docker Root Dir:'
Docker Root Dir: /var/lib/docker

[root@docker01 ~]# docker images
REPOSITORY                 TAG       IMAGE ID       CREATED        SIZE
wordpress                  latest    0965faacfaf0   7 weeks ago    686MB
mysql                      5.7.44    5107333e08a8   9 months ago   501MB
172.16.1.103:5000/centos   7         eeb6ee3f44bd   2 years ago    204MB
centos                     7         eeb6ee3f44bd   2 years ago    204MB

### 修改docker默认数据目录
vim /etc/docker/daemon.json
{
        "registry-mirrors": ["https://docker.1panel.live", "https://hub.rat.dev/", "https://docker.chenby.cn", "https://docker.m.daocloud.io"],
        "insecure-registries": ["http://10.0.0.105","http://172.16.1.103:5000"],
        "data-root": "/docker_data"
}

### 重启
[root@docker01 ~]# systemctl daemon-reload
[root@docker01 ~]# systemctl restart docker

### 查看
[root@docker01 ~]# docker info | grep 'Docker Root Dir:'
 Docker Root Dir: /docker_data

[root@docker01 ~]# docker images
REPOSITORY                 TAG       IMAGE ID       CREATED        SIZE