Docker基础学习(5)-修改Docker存放路径

修改docker的默认存放路径,文件夹或硬盘作为后端存储
这个问题看了很多资料博客,总结了一个图
在这里插入图片描述
(1)文件夹作docker后端:
①可以通过软链接到默认的/var/lib/docker

ln -s /opt/docker   /var/lib/docker

②可以通过修改配置文件
修改配置文件
方法一:修改/usr/lib/systemd/system/docker.service,添加--graph=路径。#新版本使用--data-root=路径

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --graph=/opt/docker
#有些老版本里是ExecStart=/usr/bin/dockerd-current

方法二:修改/etc/docker/daemon.json(没有的话创建一个)。{}添加"graph":"/opt/docker",新版本使用"data-root": "/opt/docker"

{
#如果有原有项,记得后面加逗号,
"graph":"/opt/docker"
}

(2)硬盘作docker后端:
①挂载到文件夹(记得自动挂载哦),转到"文件夹作docker后端"的问题上
②直接作为LVM卷提供存储

推荐阅读http://www.dockerinfo.net/2182.html
devicemapper是RHEL下Docker Engine的默认存储驱动,它有两种配置模式:loop-lvm和direct-lvm
docker storage driver之devicemapper

https://www.cnblogs.com/xzkzzz/p/7467654.html
1、基于Linux内核中的DeviceMapper框架实现,该框架实现了物理存储设备与虚拟存储设备的映射,或虚拟设备与虚拟设备之间的映射。这使得用户能够用该框架来实现磁盘的自由、动态的划分。LVM2,software RAIDs和dm-cryptdisk encryption等都是基于该框架的实现。更为重要的是,Device Mapper框架中提供两个功能,thin-provisioning和snapshot。
2、thin-provisioning,类似于虚拟内存,提供给使用者的空间只有在使用者进行写操作时才真正进行分配。假设使用者有一块100g的thin块设备,使用了20g,实际系统提供的大小就是20g,只有当使用者进行存储操作时才分配更多的空间,直到100g。
3、snapshot,快照,是一种COW策略的实现,假设从A设备做快照得到B设备时,并未对A进行完整拷贝,而是当对B设备进行写操作时,才将需要改变的那部分做属于B设备的拷贝。
4、devicemapper利用了该框架中的thin-provisioning和snapshot实现了镜像的分层结构和存储优化。在用devicemapper作为graphdriver的docker中,每个镜像和容器都对应一个设备,通过对镜像做snapshot操作得到容器,所以容器中拥有镜像的内容且操作这些内容不影响镜像本身,因为容器和镜像对应不同的设备。
5、devicemapper有两种模式可选,loop-lvm和direct-lvm。devicemapper的大致思路是,先通过虚拟化技术得到一个thin-pool设备(可理解成一个资源池),接着在thin-pool上建立一个基础设备,此后docker上所有镜像和容器都是基于此设备的snapshot。两个模式的区别就在与建立thin-pool的方法不同。
loop-lvm:
创建两个稀疏文件data和metadata
将这两个文件映射成两个块设备(loopback块设备)
将两个设备通过内核中Device Mapper映射成thin-pool
注意!该模式不推荐用于生产环境,因为该模式在宿主机跑高密度容器数量的话,性能下降急剧,生产环境中一台宿主机不可能只跑单个容器
direct-lvm:
(利用了基于Device Mapper的LVM)
将空余块设备(可以是分区)创建成physical volume(pv)
在由这些PV组成volume group(vg)
从vg中建立两个logical volume(lv),data和matedata
将data和matedata映射成thin-pool

https://blog.csdn.net/counsellor/article/details/53413743
docker storage pool再多说几句。因为是基于LVM的,所以镜像和容器都在块系统中,也就是VolGroup00这个池子里。/var/lib/docker主要存储的是镜像和容器的配置文件和device-mapper映射文件等,所以这个目录不会太大。

  • 使用docker-storage-setup(direct-lvm模式)(新版好像没这个文件了)
[root@docker~]#cat /etc/sysconfig/docker-storage-setup
CONTAINER_THINPOOL=docker-pool
DEVS=/dev/vdb
VG=docker-vg 
[root@docker~]#systemctl stop docker
[root@docker~]#rm-rf /var/lib/docker/
[root@docker~]#docker-storage-setup
[root@docker~]#systemctl start docker
[root@docker~]#docker info
。。。
 Pool Name: docker--vg-docker--pool	

下面用软链接的方法做个演示

获取当前Docker的根路径

docker info | grep 'Root Dir'
Docker Root Dir: /var/lib/docker

image-20200420101011901

备份Docker目录

cp -aR /var/lib/docker/*  /dockerbackup/ 

image-20200420101338064

修改Docker存放路径

  • 使用创建软链接的方法(简单)
systemctl stop docker
mkdir /opt/docker
ln -s /opt/docker   /var/lib/docker

image-20200420102345913

  • 其它方法

    • 方法一:修改/usr/lib/systemd/system/docker.service,添加--graph 路径

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --graph /opt/docker
```
- 方法二:将一块新的硬盘挂载到/var/lib/docker目录,并设置为开机自动挂载(写 入/etc/fstab)

恢复备份文件、重启服务

cp -aR /dockerbackup/*  /opt/docker
systemctl daemon-reload 
systemctl start docker

image-20200420102524541

使用硬盘做docker后端存储

添加一块硬盘,使用新的硬盘存储Docker文件

关机添加一块新硬盘

image-20200424132819180

开机,分区,格式化
lsblk #可以看到新加硬盘,这里是sdb
fdisk /dev/sdb #一路回车使用默认设置即可
lsblk #可以看到硬盘sdb的新分区sdb1
 mkfs.xfs /dev/sdb1 #格式化

image-20200424133100191

image-20200424133645016

挂载使用磁盘

先备份/var/lib/docker目录,将一块新的硬盘挂载到/var/lib/docker目录,然后将备份复制回去

mkdir /dockerbackup/
systemctl stop docker
cp -aR /var/lib/docker/*  /dockerbackup/ 
mount /dev/sdb1 /var/lib/docker
cp -aR /dockerbackup/* /var/lib/docker/
systemctl start docker

image-20200424141305495

硬盘设置开机自动挂载

查看分区UUID

blkid /dev/sdb1

image-20200424140018174

修改/etc/fstab添加

UUID=15ede0d4-ecf7-4826-b435-87398239a5db /var/lib/docker xfs defaults 0 0

image-20200424141736800

测试一下自动挂载,重启或者卸载再挂载

df -h#查看到挂载的sdb1
systemctl stop docker#先停掉docker 1.避免影响生产环境 2.磁盘使用者卸载会"设备忙"
umount /var/lib/docker #卸载掉手动挂载的磁盘
mount -a #会挂载 fstab 中的所有文件系统
df -h#看到自动挂载的sdb1
systemctl start docker

image-20200424141923476

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值