Docker入门到专精06-容器间通信与共享数据
程序员文章站
2024-01-28 15:57:28
...
容器间Link单向通信
容器间的单向访问
演示
分别启动两个容器
# --name 指定容器标识
docker run -d --name web tomcat
# -it 进入交互模式+后台运行/bin/bash 防止容器退出
docker run -d --name database -it centos /bin/bash
使用docker inspect 指令查询容器ip
[aaa@qq.com ~]# docker inspect web | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
[aaa@qq.com ~]# docker inspect database | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.3",
"IPAddress": "172.17.0.3",
进入web容器,尝试ping database容器
docker exec -it web /bin/bash
# ping ip成功
ping 172.17.0.3
# ping 容器名称失败
ping database
tomcat向database的单向通信,tomcat中只需要通过database进行访问(实际实验中未添加–link参数,也能实现,可能跟docker版本有关)
docker run -d --name web --link database tomcat
Bridge网桥双向通信
- 网桥可以将容器向外部发送的数据交给物理网卡处理
- 网桥将容器从网络层面上进行分组
在网桥上将容器划分到同一个分组,同一个分组的容器,天然的可以网络互通
示例
容器创建
# --name 指定容器标识
docker run -d --name web tomcat
# -it 进入交互模式+后台运行/bin/bash 防止容器退出
docker run -d --name database -it centos /bin/bash
网桥创建
# 查看网桥
docker network ls
# 创建网桥
docker network create -d bridge my-bridge
# 容器绑定网桥
docker network connect my-bridge web
docker network connect my-bridge database
网络测试
docker exec -it web /bin/bash
ping database
网桥实现原理
Volume容器间共享数据
Volume-数据卷
容器间数据共享的意义
容器不再持有具体的数据资源,多个容器持有同一份数据资源,便于数据的修改与维护
通过设置-v挂载宿主机目录
格式:
docker run --name 容器名 -v 宿主机路径:容器内挂载路径 镜像名
实例:docker run --name t1 -v /usr/webapps:/usr/local/tomcat/webapps tomcat
通过–volumes-from 共享容器内挂载点
创建共享容器,该共享容器无需运行docker create --name webpage -v /webapps:/tomcat/webapps tomcat /bin/true
共享容器挂载点docker run --volumes-from webpage --name t1 -d tomcat
版权说明
本文章内容为马士兵教育《架构师必备技能docker入门到专精》课程的学习笔记