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

[经验分享] docker数据管理

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-8-23 09:33:31 | 显示全部楼层 |阅读模式
容器中管理数据主要有两种方式
1、数据卷
2、数据卷容器


一、数据卷
1、基于training/webapp镜像创建一个容器,并在容器内创建一个数据卷
使用training/webapp镜像创建一个web容器,并创建一个数据卷挂载到容器的/webapp目录
root@docker-test:~# root@docker-test:/# docker run -idt -P --name web -v /tantianran training/webapp python run.py
4c5baed6426181815ddd9f0884855bd9e22a27b460eb1c77b5a97a07ecbbd813

提示:
-P 发布所有暴露的端口到随机端口
创建的数据卷/tantianran ,挂载给名字为web的容器时,会在容器内部的根目录下自动创建一个名为tantianran的目录


2、查看运行的容器
root@docker-test:~# docker ps -a
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                     NAMES
8bf5a39b85f0        training/webapp:latest   "python app.py"     6 minutes ago       Up 6 minutes        0.0.0.0:32772->5000/tcp   web      

提示:0.0.0.0:32772->5000/tcp 表示访问172.17.42.1:32772端口都会重定向到容器侦听的5000端口(flask web程序)



3、进入这个容器后查看IP地址
docker exec -ti 078519be8a26 /bin/bash    #进入容器
root@8bf5a39b85f0:/opt/webapp# ifconfig    #查看IP地址
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:16  
          inet addr:172.17.0.22  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:16/64 Scope:Link
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:39 errors:0 dropped:0 overruns:0 frame:0
          TX packets:39 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2868 (2.8 KB)  TX bytes:3034 (3.0 KB)


4、在本地主机查看IP地址
root@docker-test:~# ifconfig
docker0   Link encap:Ethernet  HWaddr 56:84:7a:fe:97:99  
          inet addr:172.17.42.1  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::5484:7aff:fefe:9799/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:288 errors:0 dropped:0 overruns:0 frame:0
          TX packets:181 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:19306 (19.3 KB)  TX bytes:15494 (15.4 KB)

提示:那么,通过查看本地主机的IP地址,和进入容器后查看IP地址,就一目了然了,docker会在本地主机虚拟出一块网卡
      作为docker容器网络连接的网关,以及给docker容器分配IP地址

5、挂载一个主机目录作为数据卷 (在做这个操作之前,之前的容器需停止掉,或者删除掉,或者将创建此容器时命名为别的名字,不然会存在冲突)
在本地主机根目录下创建目录:local_mydata/ #其实不用创建也行,docker会自动创建
并创建几个文件:touch my_test.py my_config.py

root@docker-test:~# docker run -d -P --name testweb -v /local_mydata:/mydata training/webapp python run.py #加载本地主机的/local_mydata目录到容器的/mydata目录
9fa32094da848d2b5817edc49b9971ffdb72319589a10334b442174dd0061c81
注意,容器中的/mydata目录会自动创建,另外,本地主机的目录的路径必须是绝对路径,如果目录不存在,docker会自动创建


6、挂载一个本地主机作为数据卷



二、数据卷容器
1、基于ubuntu镜像创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata
root@docker-test:~# docker run -idt -v /dbdata/ --name dbdata ubuntu

2、基于ubuntu镜像创建db1和db2两个容器,并从dbdata容器挂载数据卷
root@docker-test:~# docker run -idt --volumes-from dbdata --name db1 ubuntu #创建db1容器
593de70961a07bc1af5d12591833a62d691d594f302f92ee96c3587d87ae6aa6
root@docker-test:~# docker run -idt --volumes-from dbdata --name db2 ubuntu #创建db2容器
39d71abc194d66f53211893efcdcd1cdff6cc5b52c0365a03d2a1e55aa225216
root@docker-test:~# docker ps -a    #查看容器信息
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
39d71abc194d        ubuntu:latest       "/bin/bash"         5 seconds ago       Up 4 seconds                            db2                 
593de70961a0        ubuntu:latest       "/bin/bash"         12 seconds ago      Up 11 seconds                           db1                 
a6a32f7838ee        ubuntu:latest       "/bin/bash"         4 minutes ago       Up 4 minutes                            dbdata         

此时,容器db1和db2都同时挂载同一个数据卷到相同的/dbdata目录,任何一方在该目录下写入数据,其它容器都能看到


3、进入dbdata容器中创建一些文件
root@docker-test:~# docker exec -ti dbdata /bin/bash    #进入容器

4、分别进入db1和db2查看
root@docker-test:~# docker exec -ti db1 /bin/bash
root@docker-test:~# docker exec -ti db2 /bin/bash

运维网声明 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-403365-1-1.html 上篇帖子: docker仓库-创建和使用私有仓库 下篇帖子: docker网络基础配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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