【Docker】三、docker网络通信机制

这篇具有很好参考价值的文章主要介绍了【Docker】三、docker网络通信机制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、同宿主机Docker网络通信机制

【Docker】三、docker网络通信机制

1、查看容器IP:

1、如果已经进入了容器则查看hosts文件即可:cat /etc/hosts、
2、如果没有进入容器则使用:docker inspect 查看其中的NetworkSettings下面的IPAddress字段即为容器IP;
【Docker】三、docker网络通信机制

2、容器访问宿主机 / 宿主机访问容器

  • 宿主机ping容器
    【Docker】三、docker网络通信机制
  • 容器ping宿主机
    【Docker】三、docker网络通信机制- 容器访问外网
    【Docker】三、docker网络通信机制- 宿主机访问外网
    【Docker】三、docker网络通信机制
  • 外网访问容器,
    外网访问容器,则需要通过端口映射,即宿主机的端口映射容器内服务的端口;
    外界–>宿主机8080端口–>容器8080端口
    (要求:宿主机8080端口 映射到 容器8080端口)

3、同宿主机中容器和容器之间的访问

同一个宿主机中,容器与容器之间的通信可以有几种实现方式:

1、通过容器本身的ip相互直接访问对方;

Tomcat互访、Redis互访、MySQL互访
这种方式会导致ip地址的硬编码写死,不方便迁移,容器重启后,ip可能会发生变化,容器启动时是随机生成的一个ip,通过容器ip访问不是一个好的方案,不推荐使用;

2、通过宿主机的ip:port访问

通过宿主机的ip:port访问,需要将宿主机的端口与容器的端口进行映射;

3、通过link建立连接(老版本使用,官方已经不推荐使用)

运行容器时,指定参数link,使得源容器与被链接的容器可以进行相互通信,并且接受的容器可以获得源容器的一些数据,比如:环境变量;

  • 源容器:mysql
    docker run -d --name test-mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
    #被链接容器 centos
    docker run -d --name test-centos --link test-mysql:mysql centos
    #进入test-centos
    docker exec -it test-centos /bin/bash
    然后在centos中直接通过 link的名字或者link时候取的别名就能进入:
    mysql -h test-mysql -uroot -p123456
    或者:
    mysql -h mysql -uroot -p123456
    通过link建立连接的容器,被链接的容器能 ping 通源容器,反过来不行;

4、通过自定义网络通信(官方推荐)

使用docker network命令创建一个桥接网络,在docker run的时候将容器指定到新创建的桥接网络中,这样同一桥接网络中的容器就可以相互访问;
查看当前宿主机有哪些桥接网络:

docker network ls
  • 1、创建桥接网络
docker network create my-docker-network
  • 2、启动容器时,加入创建的网络,并指定网络别名
docker run -d --network my-docker-network --network-alias mysql -e MYSQL_ROOT_PASSWORD=123456 docker.io/mysql
  • 启动被链接的容器
docker run -d --network my-docker-network --network-alias mysql2 -e MYSQL_ROOT_PASSWORD=123456 docker.io/mysql

【Docker】三、docker网络通信机制
【Docker】三、docker网络通信机制

4、不同宿主机Docker容器之间通信

【Docker】三、docker网络通信机制
Docker跨宿主机通信目前有如下几种主流方法:

  • 1、使用路由机制打通网络;
  • 2、使用Open vSwitch(OVS)打通网络 ;
  • 3、使用flannel来打通网络;
  • 4、使用Quagga来实现自动学习路由;
  • 5、借助openstack、k8s等方式打通网络;
下面我们介绍使用路由机制打通网络方案;
  • a机192.168.10.128,容器网段172.18.0.1/16,a机起了容器ip是172.18.0.2
  • b机192.168.10.129,容器网段172.17.0.1/16,b机起了容器ip是172.17.0.2
  • 两台机分别配置路由表
    a机,route add -net 172.17.0.0 netmask 255.255.255.0 gw 192.168.10.129
    b机,route add -net 172.18.0.0 netmask 255.255.255.0 gw 192.168.10.128
    添加好后,查看路由 route

然后a机ping b机容器,发现仍是ping不通,就是数据包会drop掉;

ip_forward配置

我们在b机上使用以下命令查看网络包转发情况,发现会丢失

iptables -t filter -nvL FORWARD

【Docker】三、docker网络通信机制
我们需要b机上配置,寻找172.17段ip的网络包不丢失,进行转发;

a机器:	iptables -I DOCKER -d 172.17.0.0/16 -j ACCEPT
b机器:	iptables -I DOCKER -d 172.18.0.0/16 -j ACCEPT

-从而整个网络联通
【Docker】三、docker网络通信机制
【Docker】三、docker网络通信机制文章来源地址https://www.toymoban.com/news/detail-488249.html

到了这里,关于【Docker】三、docker网络通信机制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Docker】网络模式详解及容器间网络通信

    目录 一、概述 二、默认网络 三、网络模式及应用 1. Bridge模式 2. Host模式 3. none网络模式 四、自定义网络应用 1. 网络相连 2. 自定义通讯 3. 自定义IP 每篇一获 在 Docker 中,网络设置包括 IP 地址、子网掩码、网关、DNS 和端口号等关键组成部分。下面我将为您详细介绍这些概念

    2024年01月18日
    浏览(31)
  • Docker网络模型:理解容器网络通信和连接

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月14日
    浏览(30)
  • Docker数据管理和网络通信

    Docker 的数据管理 管理 Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(DataVolumes Containers)。 1.数据卷 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像

    2024年02月08日
    浏览(40)
  • Docker的4种网络通信模式

    由于Docker 容器彼此之间是逻辑隔离的,所以,在安装 Docker 时会在容器中创建隔离的网络环境。在该隔离的网络模式环境中,运行在宿主机上的各个容器具有完全独立的网络栈,并自Docker 容器的网络环境与宿主机相互隔离。通过使用 Docker 的不同网络模式,可以使 Docke容器共

    2024年02月05日
    浏览(30)
  • Docker网络配置与自定义IP容器通信

    目录 前言 一、docker网络配置 1. bridge 虚拟网桥 2. host 网络模式 3. none 网络模式 4. 自定义container网络模式 二、自定义IP容器通信 1. 自定义IP 2. 创建所需容器(mysql,tomcat) 3. 准备项目资源 4. 构建Nginx实现负载均衡          当项目大规模使用 Docker 时,容器通信的问题也就

    2024年01月25日
    浏览(35)
  • 万字长文深入理解Docker镜像分层原理、容器数据卷、网络通信架构(Docker系列第2章,共3章)

    在执行docker pull时,会发现多个Pull complete 字样,就能体现分层,如果是一个文件,只会有一个Pull complete 。 概念:文件系统是计算机系统中用于组织和管理数据存储的一种方式。它定义了数据如何存储、命名、访问和修改的方式。 举例:如Windows自带的NTFS、FAT32、EXFAT,和L

    2024年04月14日
    浏览(25)
  • 专项技能训练五《云计算网络技术与应用》实训5-6:Docker之间网络互联通信配置

    实验前准备:在5-5环境下继续做。 1. 使用VMware安装CentOS 7虚拟机,将其命名为“Docker”。 2. 安装完虚拟机后,进入虚拟机,修改网络配置(onboot改为yes)并重启网络服务,查看相应IP地址,并使用远程连接软件进行连接。 3. 配置默认镜像yum源。 配置教程详见:[https://blog.cs

    2024年04月25日
    浏览(32)
  • Docker网络(网络通信),资源控制(CPU优化,内存优化,磁盘优化),数据管理(数据卷,端口映射,容器互联)

    目录 docker网络 网络实现原理 网络实现实例 网络模式 查看Docker中的网络列表: 指定容器网络模式 模式详解 Host模式(主机模式): Container模式(容器模式): None模式(无网络模式): Bridge模式(桥接模式): 自定义网络: cpu优化概述 1. 资源限制: 2. CPU 实时调度策略:

    2024年01月16日
    浏览(69)
  • 后端架构师必知必会系列:网络协议与通信机制

    作者:禅与计算机程序设计艺术 随着互联网的普及和互联网服务平台的崛起,越来越多的人开始了解到网络协议和通信机制。而作为后端开发工程师,掌握网络协议、通信机制对于系统的性能优化和网络安全来说至关重要。这几年,网络协议和通信机制在各个领域都得到了广

    2024年02月07日
    浏览(38)
  • 解决---设备“VMnet0”上的网桥没有运行。该虚拟机无法与此主机或网络上的其他主机进行通信。 无法连接虚拟设备“Ethernet0”。

    quad quad 由于之前安装过VMware,但是卸载后从新安装导致 虚拟机 的虚拟网络编辑器没有桥接模式,即只有 网络适配器 网络类型 VMnet1 Host-only(仅主机) VMnet8 NAT quad quad 这导致 你所安装的虚拟机( 如 Ubuntu) 就不能与你的电脑再同一个网段,也就是虚拟机与你的电脑不能够

    2024年02月01日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包