准备部署基于springboot+nacos+redis+mysql程序,每个组件都分别放到指定容器中,此时就遇到了一个问题,那就是容器之间怎么才能互相访问?下面介绍一下容器互访的解决方式。本文使用的centos是自定义的centos镜像,可以直接在容器中使用vim,ifconfig命令,该镜像对应的DockerFile见链接

方式一、通过IP直接访问

在宿主机上通过ifconfig可以看到,当我们在宿主机上安装docker时,会默认创建一个内部的桥接网络docker0,每创建一个容器就会对应的分配一个虚拟网卡,容器之间可以通过ip直接访问

1、运行命令  docker run -it --name lcg mycentos:1.3 创建一个容器,并查看ip地址为:172.17.0.3

2、运行命令  docker run -it --name lcg1 mycentos:1.3 创建一个容器,并查看ip地址为:172.17.0.4

3、在两个容器之间互相ping对方,或者ping宿主机都能ping通

这样就可以实现容器之间及宿主机之间的互访了,但是这种方式在面对集群部署就显得不友好了,所以实际应用中很少用

方式二、通过使用link实现访问

通过link参数实现访问

1、使用命令docker run -it --name lcg mycentos:1.3  启动第一容器

2、启动第二个容器时,使用link参数

docker run -it --name lcg1  --link lcg:lcgsky  mycentos:1.3

第二个容器命名lcg1,并将其连接到lcg容器中。注意--link lcg:lcgsky,lcg为容器名称,lcgsky表示网络/容器别名。实际使用过程中建议用相同名称,docker run -it --name lcg1  --link lcg:lcg mycentos:1.3 ,容器名称和别名一致的时候可以直接写成 docker run -it --name lcg1 --link lcg mycentos:1.3

3、查看 容器二中的hosts文件,cat  /etc/hosts

可以看到 172.17.0.2 与 lcg 对应

4、在lcg1中ping lcg,及ping 172.17.0.2

可以正常ping通

5、在lcg容器中ping lcg1及172.17.0.3

可以发现ping lcg1不通,ping 172.17.0.3,可以ping通,这说明采用link方式有先后顺序,实际应用中如果多容器互访使用可能就不方便了。

方式三、通过自定义bridge访问

1、运行 docker network create lcgnet 创建一个新的bridge网络,并通过 docker network ls查看

2、通过指定网络的方式创建容器lcg

docker run -it --name lcg --network lcgnet --network-alias lcgsky mycentos:1.3

--network lcgnet :表示使用lcgnet网络

--network-alias lcgsky: 表示网络别名为lcgsky

2、使用相同方式创建容器lcg1

docker run -it --name lcg1 --network lcgnet --network-alias lcgsky1 mycentos:1.3

3、两个容器之间互访

4.推荐使用这种方法,若访问容器中服务,可以使用 网络别名加端口号访问 这用方式访问

Docker容器之间互访相关推荐

  1. 微服务架构与Docker容器之间关系

    微服务j架构与Docker容器之间关系 因公司业务市场的发展与技术架构等结合因素,希望接下来的产品架构能支撑轻量级.高并发.大数据.智能化.易维护.动态扩展等方向发展,因项目性能问题需要处理,公司架构 ...

  2. Docker精华问答 | 多个 Docker 容器之间共享数据怎么办?

    在计算机技术日新月异的今天, Docker 在国内发展的如火如荼.特别是在一线互联网公司 Docker 的使用是十分普遍的,甚至成为了一些企业面试的加分项,那么今天我们继续关于Docker 的精华问答 ...

  3. docker 容器共享数据_如何在Docker容器之间共享数据

    docker 容器共享数据 介绍 (Introduction) Docker is a popular containerization tool used to provide software a ...

  4. Docker容器之间数据传输

    Docker容器之间数据传输 1.从容器中将文件拷贝到宿主机上. 在宿主机你想要接收文件的地方,运行下面的指令 docker cp 容器id:home/test . docker run -d --n ...

  5. Docker容器之间的通信

    前言 平常在使用Docker容器部署项目的时,比如我们构建一个SpringBoot项目的容器和一个Redis的容器,我们希望SpringBoot项目可以正常访问到Redis容器,通常做法是这样的: 假 ...

  6. docker 容器之间通信_四、Docker 网络原理、分类及容器互联配置

    本文是<Docker必知必会系列>第四篇,原文发布于个人博客:悟尘纪. 上一篇:Docker必知必会系列(三):基于 Docker-registry/Nexus3 搭建本地仓库 Docke ...

  7. Docker容器之间相互访问

    因为我们的项目需要使用mysql及redis这些,所以我们需要进行相互访问 三种通讯方式 方案1:容器之间默认可以使用容器的ip进行通信,但是重启docker,ip会变化.查看ip如下: docker ...

  8. Docker篇之docker容器之间的通信

    自从Docker容器工具诞生以来,当我们在正式线上环境进行容器部署以及容器管理任务时,通常容器之间是需要进行数据通信的,来支撑正常业务运转.因此容器间的通信也随之成为热点,也是生产环境中的重中之重. ...

  9. docker 容器之间通信_还不清楚docker容器间是如何通信的?看这篇文章就够了

    如果觉得文章有帮助,欢迎点击头像关注我获取更多原创文章,同时也欢迎转发. 同时也可以在我的历史文章中找到Linux操作系统相关的服务器运维管理入门系列文章,欢迎交流. 前文演示docker容器内部数据 ...

  10. 宿主机和docker容器之间的文件拷贝

    1.从容器里面拷文件到宿主机 在宿主机里面执行以下命令: docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径 示例: 假设容器名为nginx,要从容器里面拷贝的文件路为 ...

最新文章

  1. vim 多窗口,多tab编辑
  2. select 1 from table
  3. Linux 自带的LED 灯驱动实验
  4. 信息学奥赛一本通C++语言——1052:计算邮资
  5. java页面代码下载_java 下载页面代码
  6. 国内外优秀音视频博客索引(持续更新)
  7. 拓端tecdat|R语言广义线性模型索赔频率预测:过度分散、风险暴露数和树状图可视化
  8. django rest framework serializer 增加自定义字段
  9. uni-app 小程序引入字体图标
  10. 【IoT】创业:什么是设计思维,如何使用?
  11. 淘宝客返利网的实现方法
  12. PMP常考知识点核对单-8.项目质量管理
  13. linux手动焦距,摄影师必学!如何精准的手动对焦
  14. 比赛记录——记录一次失败的比赛,九坤量化验证码识别大赛
  15. 银河麒麟系统安装失败
  16. SQLServer数据库安全规划全攻略(转)
  17. Oracle实现使用时间函数实现输出“上午好/下午好”
  18. rmarkdown入门
  19. 破解大数据孤岛化 SaaS主流厂商共建开放标准
  20. php 逆序数组不使用reverse,PHP多维数组排序array_reverse不起作用?

热门文章

  1. MATLAB用solve求解普通二元高次方程
  2. 独立思考者的思考模型----智商160以上的人都应该学会的(摘自杜牛牛博客)
  3. 数据库MySQL创库、创表基本命令
  4. python描述对象静态特性的数据为_短期借款利息数额不大,可以直接支付,不预提,在实际支付时直接记入的账户是( )。...
  5. ROS学习笔记4_订阅者Subscriber
  6. dbt-tidb 1.2.0 尝鲜
  7. CO BW成本报表建立小结
  8. python3,烤地瓜案例
  9. 3DsMax——竹篮制作
  10. Java基础-数组01