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 51CTO博客,原文链接:http://blog.51cto.com/andyliu/1852670,如需转载请自行联系原作者
相关文章
|
2天前
|
SDN
磁盘和文件系统管理
磁盘和文件系统管理
磁盘和文件系统管理
|
存储 缓存 固态存储
磁盘存储和文件系统| 学习笔记
快速学习磁盘存储和文件系统
148 0
磁盘存储和文件系统| 学习笔记
|
存储 IDE Linux
|
存储 Linux 索引
磁盘文件系统二
磁盘文件系统二
磁盘文件系统二
|
存储 固态存储 索引
磁盘文件系统一
磁盘文件系统一
磁盘文件系统一
|
存储 监控 文件存储
文件存储管理文件系统的操作有哪些?
本文介绍如何在NAS控制台上管理文件系统,包括创建文件系统、查看文件系统列表、查看文件系统详情、删除文件系统等操作。
1214 0
|
Linux
磁盘及文件系统管理_学习笔记
时间:2017.12.01作者:李强参考:man,info,magedu讲义,神奇的internet声明:以下英文纯属个人翻译,英文B级,欢迎纠正,以下内容纯属个人理解,并没有对错,只是参考,盗版不纠,才能有限,希望不误人子弟为好。
998 0

相关实验场景

更多