掌握CentOS7环境下的Docker使用(六)Link实现单向通信、brige网桥实现双向通信、特权模式、Volume数据共享
创始人
2025-05-29 15:41:23

文章目录

  • 容器间基于Link实现单向通信
  • Docker容器间利用brige网桥实现双向通信
  • Docker容器的特权模式
  • Volume数据共享
    • 建立nginx容器集群,共享宿主机的index.html文件

容器间基于Link实现单向通信

比如想部署了jdk和tomcat的容器访问部署了mysql的容器,就是容器和容器直接的通信

单向通信就是tomcat容器可以向mysql容器发送网络包读取内容,mysql容器不需要向tomcat发送请求

启动mysql数据库容器:
docker run --name mydb -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

因为多个tomcat容器可以同时使用link通信mysql容器,如果这个mysql容器出现问题无法使用,换了新的MySQL容器那么ip就会改变,连带会影响所有的通信这个mysql的tomcat容器

但如果使用了–name 容器名运行的容器,则可以直接使用容器名代替ip地址,这样无论mysql的ip如何改变,都不影响

启动tomcat应用容器并link到mysql数据库:
docker run -itd --name tomcat1 --link mydb mycentos:jdk

进入tomcat容器,检验是否能ping通mysql容器:
在这里插入图片描述

进入mysql容器,检验是否能ping通tomcat容器:
在这里插入图片描述

mysql容器安装ping命令:yum install iputils

Docker容器间利用brige网桥实现双向通信

使用docker network ls查看当前网络,三种网络模式
在这里插入图片描述

创建一个新的网桥:docker network create -d bridge my_bridge
在这里插入图片描述

把刚刚两个单向通信的容器加入网桥:
把第一个容器加入网桥docker network connect my_bridge tomcat1
把第二个容器加入网桥docker network connect my_bridge mydb
进入容器验证:
在这里插入图片描述

此时mysql容器能够ping通tomcat,完成双向通信

Docker容器的特权模式

当正常启动一个普通容器时,使用route -n查看网关
使用route del default gw 172.17.0.1删除172.17.0.1的网关
在这里插入图片描述

删除失败,因为权限不够,因为root本身已经是超级管理员了,因此要用到特权模式,
启动拥有特权模式的容器:
docker run -itd --privileged=true --name mycentos1 centos:7 /bin/bash

正常方式进入容器

再次执行删除网关操作:
在这里插入图片描述
成功删除

Volume数据共享

Volume数据共享实际上就是文件挂载,文件挂载一般用于把容器中的日志文件挂载到宿主机上,这样就不必进入容器才能查看日志,或者把容器中部署的mysql中的数据挂载到宿主机上,这样如果docker宕机无法进入,也不会丢失数据。

编写dockerfile:

FROM centos:7
VOLUME ["/usr/local"]

构建镜像:
在这里插入图片描述
运行容器:
docker run -itd --name centos-volume 4e60f71029a5 /bin/bash

查看容器详情,Mounts上有挂载信息:
在这里插入图片描述
也就是容器中的/usr/local路径挂载到宿主机的“Source”值的路径上

进入这个路径,可以看到容器中/usr/local路径下的内容:
在这里插入图片描述
可以进入容器中进行验证:
在这里插入图片描述

注意:在dockerfile里设置volume是无法修改宿主机的挂载路径的

启动宿主机nginx:/usr/local/nginx/sbin/nginx
在这里插入图片描述
在这里插入图片描述

建立nginx容器集群,共享宿主机的index.html文件

将宿主机中/html路径下的index.html文件更改为自定义内容:
在这里插入图片描述
在这里插入图片描述

创建nginx1
docker run -itd -p 8080:80 -v /usr/local/nginx/html:/usr/local/nginx/html --name nginx1 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"
在这里插入图片描述
创建nginx2
docker run -itd -p 8081:80 --volumes-from nginx1 --name nginx2 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"

使用--volumes-from nginx1表示共享nginx1容器的volume
在这里插入图片描述

创建nginx3
docker run -itd -p 8082:80 --volumes-from nginx1 --name nginx3 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"
在这里插入图片描述

修改宿主机index.html文件内容,验证:
在这里插入图片描述
验证成功:
在这里插入图片描述

相关内容

热门资讯

原创 别... 忘记是在何处看到的了,讲的是当下年轻人操持年夜饭,酱牛肉的搜索量增长了7倍,然而番茄炒蛋反倒无人问津...
原创 腊... 还有3天就除夕了(敲黑板!2026马年没有大年三十,除夕是腊月二十九),估计现在家家户户都忙疯了吧?...
千只熏鸡抢“鲜”售罄,杭州老味... 在杭州上城区丁兰街道皋城村、沿山村,年夜饭桌上若少了那盘油亮焦香的熏鸡,年味便总觉得不完整。 这道传...
酱大骨祖传秘方:家常做法步骤详... 你是否曾经想过,如何才能炖出一锅肉质软烂、骨髓鲜香的酱大骨? 在家庭聚会中,酱大骨往往是桌上最受...
白灼菜心的家常做法:步骤详细,... 你是否在节假日的聚餐中,感到肉类菜肴吃得太多,胃口变得沉重?想要寻找一款清爽解腻的蔬菜来平衡一下吗?...