四、容器间的通信

一、容器之间的单向通信(–link)

四、容器间的通信

1.创建tomcat容器,命名为web:
四、容器间的通信

2.创建数据库容器,命名为database:
四、容器间的通信

3.查看容器原始配置:docker inspect 29902265ebb2
四、容器间的通信
四、容器间的通信

4.进入tomcat容器,ping数据库容器:docker exec -it 21e82183587d /bin/bash
四、容器间的通信

容器间可以直接使用ip地址进行通信,无法使用容器名进行通信。

5.删除tomcat容器,重新创建web容器,指定通信容器:
docker run -d --name web --link database tomcat
四、容器间的通信

6.进入tomcat容器内部,根据容器名通信:
四、容器间的通信

通过容器名通信,有利于容器间的维护,容器间不需要关注容器内部,无论通信容器内部环境是否变化,根据容器名进行访问的请求方不需要改变。

二、Bridge网桥双向通信

四、容器间的通信

1.重新创建web和database容器:
四、容器间的通信

2.列出当前docker网络服务的明细:docker network ls
四、容器间的通信

3.创建指定网络服务的类型(bridge)和ing从my-bridge:
docker network create -d bridge my-bridge
四、容器间的通信

4.将网络服务连接容器:
docker network connect my-bridge web
docker network connect my-bridge database
四、容器间的通信

5.进入database容器内部,使用web容器名进行容器间通信:
四、容器间的通信

6.进入web容器内部,使用database容器名进行容器间通信:
四、容器间的通信

网桥实现原理:
四、容器间的通信

在容器内部创建一个虚拟网卡,容器间通过绑定虚拟网卡进行通信。物理网卡通过地址转换请求虚拟网卡,实现容器外部通信。

三、Volume容器间共享数据

四、容器间的通信

通过Volume实现多个容器之间共享文件,部署集群时有利于维护:
四、容器间的通信

1.通过设置-v挂载宿主机目录

  • docker run --name 容器名 -v 宿主机路径:容器内挂载路径 镜像名
  • 实例:docker run --name t1 -v /usr/webapps:/usr/local/tomcat/webapps tomcat

通过-v参数设置挂载路径必须保证每次输入的路径都正确,否则挂载失败,容错率低。

2.通过–volumes-from共享容器内挂载点

  • 创建共享容器:docker create --name webpage -v /webapps:/tomcat/webapps tomcat /bin/true
    说明:/bin/true相当于一个占位符,没有其他含义
  • 共享容器挂载点:docker run --volumes-from webapps --name t1 -d tomcat
Volume示例
  • -v挂载宿主机目录
    1.上传共享文件:
    四、容器间的通信

2.创建tomcat容器t1,通过-v挂载宿主机目录
docker run --name t1 -p 8000:8080 -d -v /usr/webapps:/usr/local/tomcat/webapps tomcat
四、容器间的通信

3.浏览器访问页面:
四、容器间的通信

4.进入容器查看挂载的文件:
四、容器间的通信

5.创建第二个tomcat容器t2:
docker run --name t2 -p 8001:8080 -d -v /usr/webapps:/usr/local/tomcat/webapps tomcat

四、容器间的通信

6.访问第二个tomcat容器:
四、容器间的通信

7.进入宿主机共享文件目录,编辑index.html:
四、容器间的通信

8.修改index.html:
四、容器间的通信

9.访问浏览器:
四、容器间的通信

  • 共享容器
    1.创建共享容器:
    docker create --name webpage -v /usr/webapps:/usr/local/tomcat/webapps tomcat /bin/bash
    四、容器间的通信

2.创建tomcat容器,共享容器挂载点:
四、容器间的通信

3.浏览器访问:
四、容器间的通信