Docker(五)数据管理

  • A+
所属分类:Docker

Docker管理数据主要两种方式

数据卷(Data Volumes):

使用-v可以挂载一个本地的目录到容器中作为数据卷。

数据卷容器(Data Volumes Dontainers):

如果容器之间需要共享一些持续更新的数据,最简单的方式就是是用户数据卷容器,数据卷容器就是一种普通容器,专门提供数据卷供其它容器挂载使用。

数据卷

[root@py ~]# docker run -it --name test -v /data centos
[root@ddcaa9203e3d /]# df -h
Filesystem                                                                                          Size  Used Avail Use% Mounted on
/dev/mapper/docker-253:0-68306253-66597a27f62b6a4ab35f9eff4ebbc0b334c2eb173836948278e1345c032e4cc9   10G  241M  9.8G   3% /
tmpfs                                                                                               1.4G     0  1.4G   0% /dev
tmpfs                                                                                               1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/mapper/centos-root                                                                              18G  4.8G   13G  28% /data
shm                                                                                                  64M     0   64M   0% /dev/shm
[root@ddcaa9203e3d /]# ll /data/
total 0

可以看见docker已经挂载了/data目录,现在可以查看挂载点实际存放目录。

获取挂载点

[root@py ~]# docker inspect 容器名/id
[root@py ~]# docker inspect test|grep Source|awk -F '[:,]' '{print $2}'
 "/var/lib/docker/volumes/84a30b2fad274a40e08524759010565f34452fc1013bdc57065ff2254fec162e/_data"

测试在容器touce /data/yalei,然后通过系统目录查看是同一文件

[root@py ~]# docker_in test
[root@ddcaa9203e3d /]# touch /data/yalei
[root@py ~]# ll /var/lib/docker/volumes/84a30b2fad274a40e08524759010565f34452fc1013bdc57065ff2254fec162e/_data
-rw-r--r--. 1 root root 0 11月  5 09:49 yalei

映射宿主机目录

生产环境使用:可以把本机的/opt映射到docker里面,然后去收集容器的日志

[root@py ~]# docker run -it --name test02 -v /opt:/opt centos
[root@f31423346fa3 /]# df -h
Filesystem                                                                                          Size  Used Avail Use% Mounted on
/dev/mapper/docker-253:0-68306253-b5282b01ad2b9d31c455d1a32a02607a8308c1aab8bcd5e62d2e66d8a3088d40   10G  241M  9.8G   3% /
tmpfs                                                                                               1.4G     0  1.4G   0% /dev
tmpfs                                                                                               1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/mapper/centos-root                                                                              18G  4.8G   13G  28% /opt
shm                                                                                                  64M     0   64M   0% /dev/shm
[root@f31423346fa3 /]# ll /opt/
-rw-r--r--. 1 root root 0 Nov  5 01:56 sss

提示:

当然既然是挂载我们可以在挂载时指定权限例如读写、只读等(默认为读写权限)

docker run --name volume1 -v /volume/:/test1:ro -it centos #只读
docker run --name volume1 -v /volume/:/test1:rw -it centos #读写

在这里有必要提一下,有时候大家可能只想挂载一个文件,而不想挂载整个目录。其实这种情况docker也有所考虑。复用之前的命令,只需要把文件夹替换成文件即可

docker run --name volume2 -v /1.txt:/1.txt -it centos

数据容器卷

docker run --rm -it --name volumeA -v /opt:/opt centos

创建容器volumeA 并将宿主机的/opt挂在到自身的/opt目录,--rm 是退出删除容器,测试使用

docker run --rm -it --name volumeB --volumes-from volumeA centos

创建容器volumeB并挂载volumeA中的挂载目录

为了验证是否正确,我们可以采取在宿主机的/opt中创建文件,分别观察volumeA和volumeB中是否存在相同文件,即使volumeA容器停止,也不影像挂载。

YaLei

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar Michael翔 0

      博主,博客要是有 RSS 提供就好了