设为首页 收藏本站
查看: 785|回复: 0

[经验分享] docker数据管理

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-27 09:02:28 | 显示全部楼层 |阅读模式
一、docker数据管理
1、环境准备

环境准备

IP            主机名            操作系统
192.168.56.11        linux-node1        centos7

注意:我这里使用的是centos7,如果是使用centos5或者centos6,需要升级操作系统内核,否则Docker的许多新功能都无法使用

2、docker数据管理的两种方式

(1)数据卷(Data Volumes)
(2)数据卷容器(Data Volumes Dontainers)

二、数据卷
1、方式一

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

[iyunv@linux-node1 ~]# docker run -d --name nginx-volume-test1 -v /data nginx
1b1113fe3b8e4e72f9d3f132cc398448b1dadda08ad53d341e1a88984ba56079-d后台运行,--name 容器名字 –v 挂载一个本地的目录到容器中作为数据卷,比如挂在到/data
nginx镜像名称

进入docker容器
[iyunv@linux-node1 ~]# ./docker_in.sh nginx-volume-test1
root@1b1113fe3b8e:/# ls
bin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@1b1113fe3b8e:/# ls /data  #这时data目录下没有任何文件
root@1b1113fe3b8e:/# mount
/dev/mapper/docker-253:0-67758036-f73c4d92da10a8b789d3dc7b2d137bee3cc9dfebd1e46de1167eeb4b4c409a7c on / type xfs (rw,relatime,nouuid,attr2,inode64,logbsize=64k,sunit=128,swidth=128,noquota)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev type tmpfs (rw,nosuid,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (ro,nosuid,nodev,noexec,relatime)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,relatime,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (ro,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpuacct,cpu type cgroup (ro,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/cpuset type cgroup (ro,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/net_cls type cgroup (ro,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/perf_event type cgroup (ro,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (ro,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/blkio type cgroup (ro,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/devices type cgroup (ro,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/memory type cgroup (ro,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/freezer type cgroup (ro,nosuid,nodev,noexec,relatime,freezer)
**/DEV/MAPPER/CENTOS-ROOT ON /DATA TYPE XFS (RW,RELATIME,ATTR2,INODE64,NOQUOTA)**
/dev/mapper/centos-root on /run/secrets type xfs (rw,relatime,attr2,inode64,noquota)
/dev/mapper/centos-root on /etc/resolv.conf type xfs (rw,relatime,attr2,inode64,noquota)
/dev/mapper/centos-root on /etc/hostname type xfs (rw,relatime,attr2,inode64,noquota)
/dev/mapper/centos-root on /etc/hosts type xfs (rw,relatime,attr2,inode64,noquota)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
proc on /proc/asound type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/bus type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/fs type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/irq type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/sys type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/sysrq-trigger type proc (ro,nosuid,nodev,noexec,relatime)
tmpfs on /proc/kcore type tmpfs (rw,nosuid,mode=755)
tmpfs on /proc/timer_stats type tmpfs (rw,nosuid,mode=755)
root@1b1113fe3b8e:/#

使用docker inspect 查看挂载情况

[iyunv@linux-node1 ~]# docker inspect -f {{.Mounts}} nginx-volume-test1
[{89a01e31a8abe828491e2cba29c9f21b02e204b88c5a7f1733f6b2b80b624b32 /var/lib/docker/volumes/89a01e31a8abe828491e2cba29c9f21b02e204b88c5a7f1733f6b2b80b624b32/_data /data local  true }]

从上面的结果我们可以看出来,docker将本地的一个目录挂载到容器的/data下

[iyunv@linux-node1 ~]# cd /var/lib/docker/volumes/89a01e31a8abe828491e2cba29c9f21b02e204b88c5a7f1733f6b2b80b624b32/_data
[iyunv@linux-node1 /var/lib/docker/volumes/89a01e31a8abe828491e2cba29c9f21b02e204b88c5a7f1733f6b2b80b624b32/_data]# ls
[iyunv@linux-node1 /var/lib/docker/volumes/89a01e31a8abe828491e2cba29c9f21b02e204b88c5a7f1733f6b2b80b624b32/_data]# touch papapa

再次进入docker容器查看,发现data目录下有刚才创建的文件

root@1b1113fe3b8e:/# ls /data
papapa
root@1b1113fe3b8e:/#

2、方式二
(1)挂载一个指定的目录

[iyunv@linux-node1 ~]# docker run -d --name nginx-volume-test2 -v /data/docker-volume-nginx/:/data nginx
cbc91bef8ea779668a696046c1aa905ba2dc65e64ed5b403633b3284e00ec126
-v 源路径:目的路径
[iyunv@linux-node1 ~]# ./docker_in.sh nginx-volume-test2
root@cbc91bef8ea7:/# ls /data   #此时data目录下没有文件
在本地主机上创建一个目录
[iyunv@linux-node1 ~]# cd /data/docker-volume-nginx/
[iyunv@linux-node1 /data/docker-volume-nginx]# ls
[iyunv@linux-node1 /data/docker-volume-nginx]# mkdir papapapa
[iyunv@linux-node1 /data/docker-volume-nginx]#
在docker容器上查看
root@cbc91bef8ea7:/# ls /data    #可以看到刚才创建的papapapa目录
papapapa
root@cbc91bef8ea7:/#

(2)挂载一个指定的文件

把/root/.bash_history挂载到容器

[iyunv@linux-node1 ~]# docker run --rm -it -v /root/.bash_history:/.bash_history nginx /bin/bash

进入容器查看挂载的文件
root@fde03de2d226:/# cat .bash_history |more
vi jenkins.log
#1472008962
ls
#1472009301
cat jenkins.log
#1472009312
cat /var/lib/jenkins/secrets/initialAdminPassword
#1472016216
挂载成功

三、数据卷容器

将容器挂载到另一个容器上

[iyunv@linux-node1 ~]# docker run -it --name volume-test3 --volumes-from nginx-volume-test2 centos /bin/bash
[iyunv@fd11374b2a58 /]# ls /data
papapapa
[iyunv@fd11374b2a58 /]#
这样的一个好处就是:一个容器挂载了本地目录,其他的所有容器使用-volumes-from挂载这个容器即可
就算是这个容器停掉,其他容器仍然可以访问这个目录

再运行一个容器,加上--rm参数,退出时删除容器

[iyunv@linux-node1 ~]# docker run --rm -it --volumes-from nfs-test centos /bin/bash
[iyunv@f32352c8d243 /]# cd /data
[iyunv@f32352c8d243 data]# ls -a  #此时data目录下是空的
.  ..

[iyunv@linux-node1 ~]# cd /data/nfs-data/
[iyunv@linux-node1 /data/nfs-data]# ls
[iyunv@linux-node1 /data/nfs-data]# touch shit    #创建一个文件
[iyunv@linux-node1 /data/nfs-data]#

[iyunv@f32352c8d243 data]# ls -a        #可以看到创建的文件
.  ..  shit




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-278048-1-1.html 上篇帖子: docker网络访问 下篇帖子: Docker镜像构建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表