• 欢迎访问运维搬运工网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 本站一年会员:100元 ,两年会员:180元 ,永久会员:380元
  • 这世界就是,一些人总在昼夜不停地运转,而另外一些人,起床就发现世界已经变了。
  • 本博客推广的是知识付费,用赞助的方式实现博客维护,不以赚钱为目的的博客

docker数据管理

docker 大自然搬运工 2年前 (2017-08-07) 1624次浏览 已收录 0个评论 扫描二维码

1、挂载本地的目录到容器里

容器创建时,默认是挂载本地的 /etc/hosts 目录到容器中,存取数据都在该目录下进行。如下查看:

[root@iZ25pvjcsyhZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c1830c8337ae centos "/bin/bash" About a minute ago Exited (0) About a minute ago drunk_joliot
137197294c46 2b8fd9751c4c "sh" 5 hours ago Exited (0) 5 hours ago sick_pike
efb2d150e7a2 2b8fd9751c4c "sh" 5 hours ago Exited (0) 5 hours ago sharp_kare
e0978a4adef1 registry.aliyuncs.com/slzcc/registry "docker-registry" 5 hours ago Up 5 hours 0.0.0.0:5000->5000/tcp suspicious_varahamihira
81e754178aef registry.aliyuncs.com/slzcc/registry "docker-registry" 9 hours ago Exited (128) 5 hours ago serene_noyce
[root@iZ25pvjcsyhZ ~]# docker start c1830c8337ae 启动一个容器
c1830c8337ae

进入容器

[mem]

[root@iZ25pvjcsyhZ ~]# docker exec -it c18 bash
[root@c1830c8337ae /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/docker-202:1-918535-7ca19bf0916d0d774d55392bf755ecd09323f37544d68b6516465cb436601ec9 10G 240M 9.8G 3% /
tmpfs 496M 0 496M 0% /dev
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/xvda1 40G 2.3G 36G 6% /etc/hosts
shm 64M 0 64M 0% /dev/shm

下面我们在创建容器的时候自定义挂载目录 /dockerdata/,后续容器存取数据都在该目录下进行。

[root@iZ25pvjcsyhZ ~]# mkdir /dockerdata
[root@iZ25pvjcsyhZ ~]# echo "msiyuetian.blog.51cto.com" > /dockerdata/1.txt  //测试文件
[root@iZ25pvjcsyhZ ~]# docker run -itd -v /dockerdata/:/data centos bash
10b3553d23dac64ccdcd9b5220b8f0516020cece0631216c630d74f50e76ca75

说明:-v 用来指定挂载目录: 前面的/dockerdata/为本地目录: 后面的/data/为容器里的目录

进入容器查看

[root@iZ25pvjcsyhZ ~]# docker exec -it 10b bash
[root@10b3553d23da /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/docker-202:1-918535-972b107cfcfce0af9af4c73905e6d743aa64029e103464ab70bedd2308d4f923 10G 240M 9.8G 3% /
tmpfs 496M 0 496M 0% /dev
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/xvda1 40G 2.3G 36G 6% /data
shm 64M 0 64M 0% /dev/shm

容器/data/目录下的文件和宿主机/dockerdata/目录下文件相同

[root@10b3553d23da /]# ls /data/
1.txt
[root@10b3553d23da /]# cat /data/1.txt
msiyuetian.blog.51cto.com

我们在容器/data/目录下新建一个文件同样在宿主机/dockerdata/目录下可查看到该文件

[root@10b3553d23da /]# touch /data/2.txt
[root@10b3553d23da /]# exit
exit
[root@iZ25pvjcsyhZ ~]# ls /dockerdata/
1.txt 2.txt

这样以来不管是容器停掉或者容器被删掉,数据都不会丢失。

[root@iZ25pvjcsyhZ ~]# docker stop 10b
10b
[root@iZ25pvjcsyhZ ~]# ls /dockerdata/
1.txt 2.txt

2、挂载数据卷

[root@iZ25pvjcsyhZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
47f58856f78d centos "bash" 5 minutes ago Up 5 minutes nauseous_euclid
e0978a4adef1 registry.aliyuncs.com/slzcc/registry "docker-registry" 20 hours ago Up 20 hours 0.0.0.0:5000->5000/tcp suspicious_varahamihira
[root@iZ25pvjcsyhZ ~]# docker run -itd --name guozhen --volumes-from nauseous_euclid centos bash
c2c7854f34a8d8779c19e197052e0474e4eacd0ef005ce52c1c9440d1988ee19
[root@iZ25pvjcsyhZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c2c7854f34a8 centos "bash" 19 seconds ago Up 18 seconds guozhen
47f58856f78d centos "bash" 7 minutes ago Up 7 minutes nauseous_euclid
e0978a4adef1 registry.aliyuncs.com/slzcc/registry "docker-registry" 20 hours ago Up 20 hours 0.0.0.0:5000->5000/tcp suspicious_varahamihira
[root@iZ25pvjcsyhZ ~]#

说明:–volumes-from 定义的数据卷来源容器名,–name  定义新建容器的名字,这样我们使用centos 镜像创建了新的容器 guozhen,并且使用了nauseous_euclid 容器的数据卷。

进入刚才的容器

[root@iZ25pvjcsyhZ ~]# docker exec -it c2c7854f34a8 bash
[root@c2c7854f34a8 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/docker-202:1-918535-ad596847580c93377e19d2a128a7efaec5fccccb4216dc55733eee48b03e143d 10G 240M 9.8G 3% /
tmpfs 496M 0 496M 0% /dev
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/xvda1 40G 2.3G 36G 6% /data
shm 64M 0 64M 0% /dev/shm
[root@c2c7854f34a8 /]# ls /data/
1.txt 2.txt

容器 /data/ 目录下新建一个文件 3.txt

[root@c2c7854f34a8 /]# ls /data/
1.txt 2.txt
[root@c2c7854f34a8 /]# touch /data/3.txt
[root@c2c7854f34a8 /]# ls /data/
1.txt 2.txt 3.txt
[root@c2c7854f34a8 /]# exit
exit
[root@iZ25pvjcsyhZ ~]# ls /dockerdata/
1.txt 2.txt 3.txt

进另外一个容器查看是不是也有刚才创建的文件

[root@iZ25pvjcsyhZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c2c7854f34a8 centos "bash" 14 minutes ago Up 14 minutes guozhen
47f58856f78d centos "bash" 21 minutes ago Up 21 minutes nauseous_euclid
e0978a4adef1 registry.aliyuncs.com/slzcc/registry "docker-registry" 20 hours ago Up 20 hours 0.0.0.0:5000->5000/tcp suspicious_varahamihira
[root@iZ25pvjcsyhZ ~]# docker exec -it 47f58856f78d bash
[root@47f58856f78d /]# ls /data/
1.txt 2.txt 3.txt

3、定义数据卷容器

有时候我们需要多个容器之间相互共享数据,类似于linux里面的NFS,所以就可以搭建一个专门的数据卷容器,然后其他容器直接挂载该数据卷。

1)建立数据卷容器

[root@iZ25pvjcsyhZ ~]# docker run -itd -v /data/ --name web centos bash
6a26c331be3a5862f0cbaa917c3050742753e9ddeeccca74f5ed7b03c2678b43
[root@iZ25pvjcsyhZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a26c331be3a centos "bash" 25 seconds ago Up 24 seconds web
c2c7854f34a8 centos "bash" 39 minutes ago Up 39 minutes guozhen
47f58856f78d centos "bash" 46 minutes ago Up 46 minutes nauseous_euclid
e0978a4adef1 registry.aliyuncs.com/slzcc/registry "docker-registry" 20 hours ago Up 20 hours 0.0.0.0:5000->5000/tcp suspicious_varahamihira

[/mem]


运维搬运工 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:docker数据管理
喜欢 (0)
[扫描二维码]
分享 (0)
大自然搬运工
关于作者:
不是路不平,而是你不行。到底行不行,看你停不停。只要你不停,早晚都能行。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址