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

[经验分享] Docker(六)数据管理与网络通信

[复制链接]

尚未签到

发表于 2019-2-21 08:19:41 | 显示全部楼层 |阅读模式
Docker(六)数据管理
  在Docker中,为了方便查看容器内产生的数据或者将多个容器中的数据实现共享,就涉及到容器的数据管理操作

管理Docker容器中数据主要有两种方法:
数据卷
数据卷容器
数据卷
  数据卷是一个供容器使用的特殊目录,位于容器中,可以将宿主机的目录挂载到数据卷上,对数据卷的操作立刻可见,并更新数据不会影响镜像,从而实现宿主机与容器之间的迁移

1:创建数据卷
  -v:可以在容器内创建数据卷,多次使用-v可创建多个数据卷
  --name:可给容器创建一个好友的自定义名称
  下面使用httpd:centos镜像创建一个名为web的容器,并创建两个数据卷分别挂载到/data1 /data2

[root@xyue ~] docker run -d -v /data1 -v /data2 --name web httpd:centos
955f7c7b5784454f742ecbeaf516341c8289c00bb4c30d7991658363faa83322
[root@xyue ~] docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                    NAMES
955f7c7b5784        httpd:centos        "/run.sh"                2 minutes ago       Up 2 minutes                  80/tcp                   web
  进入容器中,可以看到两个数据卷已经创建成功分别挂载到 /data1 /data2目录上

[root@xyue ~] docker exec -it web /bin/bash
[root@955f7c7b5784 /]# ls -l
total 16
-rw-r--r--.   9 root root 12005 Aug  4 22:05 anaconda-post.log
lrwxrwxrwx.   1 root root     7 Aug  4 22:04 bin -> usr/bin
drwxr-xr-x.   3 root root    18 Aug 13 07:51 boot
drwxr-xr-x.   2 root root     6 Aug 14 02:08 data1
drwxr-xr-x.   2 root root     6 Aug 14 02:08 data2

2:挂载主机目录作为数据卷
  使用-v选项可以在创建数据卷的同时,将宿主机的目录挂载到数据卷上使用,以实现宿主机与容器之间迁移

注意:
宿主机本地目录的路径必须使用绝对路径,如果路径不存在,Docker会自动创建相应的路径
  下面使用httpd:centos镜像创建一个名为web—1的容器,并且将宿主机上的/var/www/目录挂载到容器/data1目录上去

[root@xyue ~] docker run -d -v /var/www/:/data1 --name web-1 httpd:centos
c8ff659f1e5b8419f535877a52734b1de61202c92ff9046171d134ded18f3250
[root@xyue ~] docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
c8ff659f1e5b        httpd:centos        "/run.sh"                15 seconds ago      Up 14 seconds       80/tcp                   web-1
  我们在宿主机本地目录/var/www里面创建一个file,进入容器中进入相对应的挂载目录就可以看到刚刚我们创建的文件夹

#宿主机/var/www里面的目录
[root@xyue ~]# cd /var/www/
[root@xyue www]# mkdir file
[root@xyue www]# ls
file  html
#进入容器/data1查看
[root@xyue www]# docker exec -it web-1 /bin/bash
[root@c8ff659f1e5b /]# cd /data1/
[root@c8ff659f1e5b data1]# ls
file  html
#如果挂载的宿主机目录在挂载前已有目录挂在后一样能迁移到容器目录
数据卷容器
  如果需要在容器之间共享数据,最简单的方法就是用数据卷容器。数据卷容器就是一个普通的容器,专门提供数据卷提供给其他容器挂载使用。
  我们使用之前创建好的数据卷容器web,其中所创建的数据卷分别挂载到/data1  /data2 使用--volumes-from来挂载web容器中的数据卷到新的容器,新的容器名为db1

[root@xyue ~] docker run -it --volumes-from web --name db1 httpd:centos /bin/bash
[root@13c3a949ed6d /] ls
anaconda-post.log  boot   data2  etc   lib    media  opt   root  run.sh  srv  tmp  var
bin                data1  dev    home  lib64  mnt    proc  run   sbin    sys  usr
#在db1容器数据卷/data1目录中创建一个文件夹file再进入web容器中的/data1查看就可以看到桐言的一个file
[root@13c3a949ed6d /] cd /data1
[root@13c3a949ed6d data1] ls
[root@13c3a949ed6d data1] touch file
[root@13c3a949ed6d data1] ls
file
[root@13c3a949ed6d data1] exit
exit
[root@xyue ~] docker exec -it web /bin/bash
[root@955f7c7b5784 /] cd /data1
[root@955f7c7b5784 data1] ls
file

Docker网络通信
  Docker提供了映射容器端口到宿主机和容器互联机制来为容器提供网络服务

端口映射
  实现端口映射,需要docker run 命令时使用-P 选项来实现端口映射Docker会随机映射一个端口范围49000~49900的端口到容器内部开放的网络端口映射
  例如:

[root@xyue ~]# docker run -d -P httpd:centos
dcb542da6d70226c19bdff9459b87853b0a0bbc161e61e71b889417b2ec1d75e
#用docker ps -a 可以看到本机的32768端口映射到web容器中的80端口,用网页访问32768端口就可以访问web容器中的80端口
[root@xyue ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                    NAMES
dcb542da6d70        httpd:centos        "/run.sh"                5 seconds ago       Up 5 seconds                0.0.0.0:32768->80/tcp    adoring_jepsen


  用小写的-p可以自己指定端口,只要自己指定的端口没有被占用都可以

[root@xyue ~]# docker run -d -p 12380:80 httpd:centos


容器互联
  容器互联是通过容器的名称在容器间建立一条专门的网络通信隧道从而实现容器的互联


  •   在运行docker run --link选项可以实现容器中间的互联通信,格式为:--link name:alias

    注意:
    容器互联是通过容器的名称来执行,--name选项可以给荣放弃创建一个好友的名称,这个名称是唯一的。

1:创建源容器
  首先使用docker run 命令建立容器A 使用--name 指定容器名称为web1

[root@xyue ~] docker run -d -P --name web1 httpd:centos
d699b567ccd43c36b6874269d3d97d2f77f70ccaf1869e4832849b4734caec09
[root@xyue ~] docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                    NAMES
d699b567ccd4        httpd:centos        "/run.sh"                12 seconds ago      Up 12 seconds               0.0.0.0:32769->80/tcp    web1

2:创建接收容器
  然后使用docker run命令建立容器B,使用--name指定名称为web2使用--link指定连接容器以实现互联

[root@xyue ~] docker run -d -P --name web2 --link web1:web1 httpd:centos
77a11f9aa6a09a2d0d60f70b61349c52aef358a4b39ce551a3934a5db6ae587c
[root@xyue ~] docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                    NAMES
77a11f9aa6a0        httpd:centos        "/run.sh"                5 seconds ago       Up 4 seconds                0.0.0.0:32770->80/tcp    web2

  测试容器互联
进web2pingwen1

[root@xyue ~]# docker exec -it web2 /bin/bash
[root@13e278b0e173 /]# ping web1
PING abc (172.17.0.7) 56(84) bytes of data.
64 bytes from abc (172.17.0.7): icmp_seq=1 ttl=64 time=0.157 ms
64 bytes from abc (172.17.0.7): icmp_seq=2 ttl=64 time=0.041 ms
^C
--- abc ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.041/0.099/0.157/0.058 ms



运维网声明 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-675090-1-1.html 上篇帖子: 【Docker篇之二】数据管理与网络通信 下篇帖子: Docker的数据通信、网络通信
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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