Doker存储与文件系统

简介:

1、Doker支持的文件系统

    wKioL1fYx1ihlNtFAAOEmQGNT4E026.png-wh_50


2、Aufs文件系统介绍

wKiom1fYx1rhKr4GAAMdZ4oIfWc006.png-wh_50

Aufs 文件系统实验

Ubuntu下使用的是AUFS文件系统

通过docker info查看Docker信息:

root@compute2:/var/lib/docker/aufs/mnt# docker info

Containers: 1

 Running: 1

 Paused: 0

 Stopped: 0

Images: 7

Server Version: 1.12.0

Storage Driver: aufs

 Root Dir: /var/lib/docker/aufs

 Backing Filesystem: extfs

 Dirs: 39

 Dirperm1 Supported: true

Logging Driver: json-file

Cgroup Driver: cgroupfs

Plugins:

 Volume: local

 Network: bridge null host overlay

Swarm: inactive

Runtimes: runc

Default Runtime: runc

Security Options: apparmor seccomp

Kernel Version: 4.4.0-34-generic

Operating System: Ubuntu 16.04 LTS

OSType: linux

Architecture: x86_64

CPUs: 32

Total Memory: 125.7 GiB

Name: compute2

ID: KGBV:CXG7:2AD4:CXTH:RGTI:5SIT:VWLS:GAGN:Y6ZG:LYFR:DH4N:MYEY

Docker Root Dir: /var/lib/docker

Debug Mode (client): false

Debug Mode (server): false

Registry: https://index.docker.io/v1/

WARNING: No swap limit support

Insecure Registries:

 127.0.0.0/8

root@compute2:/var/lib/docker/aufs/mnt#


Docker存储目录

root@compute2:/var/lib/docker/aufs# pwd

/var/lib/docker/aufs/


Docker镜像存储目录

root@compute2:/var/lib/docker/aufs/diff# pwd

/var/lib/docker/aufs/diff

root@compute2:/var/lib/docker/aufs/diff# ls -lahs| xargs ls

root@compute2:/var/lib/docker/aufs/mnt# pwd

/var/lib/docker/aufs/mnt


Aufs实验:测试将两个目录挂载到同一个目录下

root@compute2:~# mkdir dir1

root@compute2:~# mkdir dir2

root@compute2:~# mkdir aufs

root@compute2:~# mount  -t aufs -o br=/root/dir1=ro:/root/dir2=rw none /root/aufs

root@compute2:~# cd aufs/

root@compute2:~/aufs# ls

file1.txt  file2.txt

root@compute2:~/aufs# echo wirte >> file1.txt

-bash: file1.txt: Read-only file system

root@compute2:~/aufs# echo wirte >> file2.txt

root@compute2:~/aufs# cat file2.txt

file2

wirte

root@compute2:~/aufs#


3、Devicemapper文件系统介绍

wKiom1fYx1rx0e3xAAIBUUCoCDg068.png-wh_50


wKioL1fYx1uCZFmKAAH3c6Ube7A510.png-wh_50


Devicemapper文件系统实验:

先修改配置文件修改使用的文件系统为devicemapper文件 系统

root@compute2:~# vim /etc/default/docker

DOCKER_OPTS="--storage-driver=devicemapper"

 

Centos7下 默认使用的是devicemapper

[root@compute default]# docker info

Containers: 1

 Running: 1

 Paused: 0

 Stopped: 0

Images: 1

Server Version: 1.10.3

Storage Driver: devicemapper

 Pool Name: docker-253:1-41956292-pool

 Pool Blocksize: 65.54 kB

 Base Device Size: 10.74 GB

 Backing Filesystem: xfs

 Data file: /dev/loop0

 Metadata file: /dev/loop1

 Data Space Used: 425.4 MB

 Data Space Total: 107.4 GB

 Data Space Available: 29.9 GB

 Metadata Space Used: 1.18 MB

 Metadata Space Total: 2.147 GB

 Metadata Space Available: 2.146 GB

 Udev Sync Supported: true

 Deferred Removal Enabled: false

 Deferred Deletion Enabled: false

 Deferred Deleted Device Count: 0

 Data loop file: /var/lib/docker/devicemapper/devicemapper/data

 WARNING: Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.

 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata

 Library Version: 1.02.107-RHEL7 (2016-06-09)

Execution Driver: native-0.2

Logging Driver: journald

Plugins:

 Volume: local

 Network: null host bridge

Kernel Version: 3.10.0-327.22.2.el7.x86_64

Operating System: CentOS Linux 7 (Core)

OSType: linux

Architecture: x86_64

Number of Docker Hooks: 2

CPUs: 2

Total Memory: 3.702 GiB

Name: compute.novalocal

ID: VN7J:AB7A:YIO4:QXQN:6KRO:SSBY:A7RF:IFZJ:JHQA:4N6S:FGLS:PIXO

WARNING: bridge-nf-call-iptables is disabled

WARNING: bridge-nf-call-ip6tables is disabled

Registries: docker.io (secure)


[root@compute default]# cd /var/lib/docker/devicemapper/devicemapper/

[root@compute devicemapper]# ls

data  metadata


Devicemapper文件系统使用测试

查看data文件的大小

[root@compute devicemapper]# ls -lahs

total 403M

   0 drwx------. 2 root root   32 Sep  8 00:26 .

   0 drwx------. 5 root root   50 Sep  8 00:29 ..

402M -rw-------. 1 root root 100G Sep  8 02:47 data

1.3M -rw-------. 1 root root 2.0G Sep  8 20:50 metadata


进入 容器创建一个200M的文件

[root@compute devicemapper]# docker ps

CONTAINER ID        IMAGE                                COMMAND             CREATED             STATUS              PORTS               NAMES

6eb042a5a721        docker.io/cmer81/centos7-openstack   "sh"                18 hours ago        Up 18 hours                             docker-openstack

[root@compute devicemapper]# docker exec -it docker-openstack /bin/bash


[root@6eb042a5a721 /]# dd if=/dev/zero of=aa.txt bs=2M count=100

100+0 records in

100+0 records out

209715200 bytes (210 MB) copied, 0.214644 s, 977 MB/s

[root@6eb042a5a721 /]# ls -alhs

total 201M

4.0K drwxr-xr-x.  17 root root 4.0K Sep  8 20:57 .

4.0K drwxr-xr-x.  17 root root 4.0K Sep  8 20:57 ..

   0 -rwxr-xr-x.   1 root root    0 Sep  8 02:45 .dockerenv

   0 -rwxr-xr-x.   1 root root    0 Sep  8 02:45 .dockerinit

200M -rw-r--r--.   1 root root 200M Sep  8 20:57 aa.txt


再次查看data文件的大小

[root@compute ~]# cd /var/lib/docker/devicemapper/devicemapper/

[root@compute devicemapper]# ls -lahs

total 603M

   0 drwx------. 2 root root   32 Sep  8 00:26 .

   0 drwx------. 5 root root   50 Sep  8 00:29 ..

602M -rw-------. 1 root root 100G Sep  8 20:59 data          

1.3M -rw-------. 1 root root 2.0G Sep  8 20:57 metadata


4、Overlayfs文件系统

wKiom1fYx1yjJHbTAAITBF5w9zg943.png-wh_50

修改docker 的主配置文件

root@compute2:~# vim /etc/default/docker

DOCKER_OPTS="--storage-driver=overlay"

root@compute2:~# service docker restart

root@compute2:~# grep overlayfs /proc/filesystems

root@compute2:~# modinfo overlayfs

filename:       /lib/modules/4.4.0-34-generic/kernel/fs/overlayfs/overlay.ko

alias:          overlayfs

alias:          fs-overlayfs

alias:          fs-overlay

license:        GPL

description:    Overlay filesystem

author:         Miklos Szeredi <miklos@szeredi.hu>

srcversion:     0B3D6723476322D2ADDC9B2

depends:       

intree:         Y

vermagic:       4.4.0-34-generic SMP mod_unload modversions

root@compute2:~# mount -t overlay overlay -o lowerdir=/root/lower,upperdir=/root/upper /root/marged



5、volume

wKioL1fYx1zyHV25AAJRh6ka41E171.png-wh_50

创建容器docker-volume1,并将容器中目录/root下映射到/data/volume下

 root@compute2:/data/volume# docker run -d --name docker-volume1 -v /data/volume:/root cmer81/centos7-openstack

ede0cd25a6808c0cb044bca969cbd1285dc49c485ea2e71c1ffec1116ecb6b5a


root@compute2:/data/volume# docker exec -it docker-volume1 sh

sh-4.2# ls                                                                                                                                                 

anaconda-post.log  bin    dev  etc  home    lib  lib64  lost+found    media  mnt  opt  proc  root  run  run.sh  sbin    srv  sys  tmp  usr  var

sh-4.2# cd root/

sh-4.2# ls

sh-4.2# touch test

sh-4.2# exit

exit

root@compute2:/data/volume# ls

test


--volumes-from参数实验:

可以实现容器间的数据共享,将上面创建的docker-volume1下映射到主机/data/volume共享到新建容器docker-volumes-from的/root中


root@compute2:~# docker ps

CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS               NAMES

ede0cd25a680        cmer81/centos7-openstack   "/run.sh"           15 minutes ago      Up 15 minutes                           docker-volume1

47d5fe8a136a        cmer81/centos7-openstack   "/run.sh"           21 minutes ago      Up 21 minutes                           docker-volume


root@compute2:~# docker run -it --name docker-volumes-from --volumes-from docker-volume1 cmer81/centos7-openstack sh

sh-4.2# ls

anaconda-post.log  bin    dev  etc  home    lib  lib64  lost+found    media  mnt  opt  proc  root  run  run.sh  sbin    srv  sys  tmp  usr  var

sh-4.2# ls root

test

sh-4.2# exit

exit

root@compute2:~# cd /data/volume/

root@compute2:/data/volume# ls

test

root@compute2:/data/volume#

root@compute2:/data/volume# docker ps

CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS               NAMES

51617b348155        cmer81/centos7-openstack   "sh"                5 minutes ago       Up 2 seconds                            docker-volumes-from

ede0cd25a680        cmer81/centos7-openstack   "/run.sh"           22 minutes ago      Up 22 minutes                           docker-volume1

47d5fe8a136a        cmer81/centos7-openstack   "/run.sh"           27 minutes ago      Up 27 minutes                           docker-volume

 

本文转自    OpenStack2015 博客,原文链接:   http://blog.51cto.com/andyliu/1852670       如需转载请自行联系原作者



相关文章
|
存储 Kubernetes Docker
使用 Docker 搭建碎片化知识卡片-Memos
Memos 是一个功能全面、易于使用的开源知识库和社交平台,适合个人和企业使用。它支持标签、过滤、搜索和多账户管理,提供多种隐私设置和后端存储选择,支持单点登录和 Docker 部署,注重数据的安全性和私密性。
1646 12
使用 Docker 搭建碎片化知识卡片-Memos
|
机器学习/深度学习 人工智能 自然语言处理
大模型
大模型正重塑数字世界,以千亿级参数和深度学习技术驱动AI革命。它赋能内容生成、智能交互与知识服务,同时带来伦理、隐私与能耗挑战。未来需走向高效、可信、向善的可持续发展之路。
|
机器学习/深度学习 数据可视化 算法
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
神经常微分方程(Neural ODEs)是深度学习领域的创新模型,将神经网络的离散变换扩展为连续时间动力系统。本文基于Torchdyn库介绍Neural ODE的实现与训练方法,涵盖数据集构建、模型构建、基于PyTorch Lightning的训练及实验结果可视化等内容。Torchdyn支持多种数值求解算法和高级特性,适用于生成模型、时间序列分析等领域。
877 77
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
|
供应链 搜索推荐 Oracle
一文看懂 供应链管理系统:是什么,功能模块,怎么定制开发?
供应链管理系统就像企业的“智能管家”,帮助企业高效管理采购、生产、库存、物流和销售等环节。对于新手来说,它不仅能减少人为错误、优化库存、提升客户满意度,还能通过自动化流程节省大量时间和成本。无论是电商、小工厂还是个性化定制企业,都能找到适合自己的解决方案,尤其通过低代码平台(如Zoho Creator),无需编程也能轻松搭建专属系统。从基础功能入手,逐步优化,小企业也能实现高效运营,让生意越做越顺。
1420 0
|
计算机视觉
RT-DETR改进策略【卷积层】| CGblock 内容引导网络 利用不同层次信息,提高多类别分类能力 (含二次创新)
RT-DETR改进策略【卷积层】| CGblock 内容引导网络 利用不同层次信息,提高多类别分类能力 (含二次创新)
437 5
RT-DETR改进策略【卷积层】| CGblock 内容引导网络 利用不同层次信息,提高多类别分类能力 (含二次创新)
|
存储 监控 安全
网络安全视角:从地域到账号的阿里云日志审计实践
日志审计的必要性在于其能够帮助企业和组织落实法律要求,打破信息孤岛和应对安全威胁。选择 SLS 下日志审计应用,一方面是选择国家网络安全专用认证的日志分析产品,另一方面可以快速帮助大型公司统一管理多组地域、多个账号的日志数据。除了在日志服务中存储、查看和分析日志外,还可通过报表分析和告警配置,主动发现潜在的安全威胁,增强云上资产安全。
1343 43
|
存储 缓存 运维
阿里云先知安全沙龙(上海站)——后渗透阶段主机关键信息自动化狩猎的实现与应用
本文介绍了在后渗透测试中使用LSTAR工具和PowerShell脚本进行RDP状态查询、端口获取及凭据收集的过程,强调了高强度实战场景下的OPSEC需求。通过MITRE ATT&CK框架的应用,详细阐述了凭证访问、发现和收集等关键技术,确保攻击者能够隐蔽、持续且高效地渗透目标系统,最终获取核心数据或控制权。文中还展示了SharpHunter等工具的自动化实现,进一步提升了操作的安全性和效率。
|
机器学习/深度学习 测试技术 API
1分钟读完100万字,Qwen2.5-Turbo上线长文本
1分钟读完100万字,Qwen2.5-Turbo上线长文本
|
开发工具
如何设置单元格的填充颜色?
【10月更文挑战第22天】如何设置单元格的填充颜色?
1540 2
|
开发框架 监控 Kubernetes
CTF本地靶场搭建——GZ:CTF基础使用
GZ::CTF是一个基于ASP.NET Core的开源CTF竞赛平台,支持Docker或K8s容器部署,提供静态和动态题目类型,包括静态附件、动态附件、静态容器和动态容器,具备动态分值功能,如三血奖励和动态flag作弊检测。平台还具有实时通知、邮件验证、用户权限管理、Writeup收集、流量代理转发等功能。此外,它包含比赛管理、队伍管理、用户管理等多个管理模块,适合举办和参与网络安全竞赛。