首页 > 其他分享 >Docker自定义网段实现容器间的互访【开发环境中】

Docker自定义网段实现容器间的互访【开发环境中】

时间:2023-11-20 18:47:07浏览次数:40  
标签:容器 网段 network 自定义 网络 网卡 mysql Docker

我们都知道docker容器之间是互相隔离的,不能互相访问,但如果有些依赖关系的服务要怎么办呢,所以自定义网段实现容器间的互访。

Docker 安装好之后默认会创建三个虚拟网卡,可以使用 docker network ls 命令来查看,三个虚拟网卡和 VMware 的类似。

bridge 是默认的网卡,网络驱动是 bridge 模式,类似于 Vmware 的 NAT 模式,如果容器启动时不指定网卡,则会默认连接到这块网卡上。如果需要访问容器内部的端口需要设置端口映射。
host 是直接使用主机的网络,网络驱动是 host 模式,类似于 Vmware 的桥接模式,可能会和主机的端口存在冲突,不需要设置端口映射即可连接到容器端口。
none 禁止所有联网,没有网络驱动,一般情况下用不到。

默认网络和自定义网络区别
说到这里可能有人会问了,那默认的网卡的网卡驱动也是 bridge 模式的,用户自定义的网络也是 bridge 模式,不就是换了一个名字吗,为什么默认的网卡不可以使用别名进行 IP 地址解析呢?

这个问题问得好,官方特意解释了这两个网卡的 区别。

User-defined bridges provide automatic DNS resolution between containers.
Containers on the default bridge network can only access each other by IP addresses, unless you use the --link option, which is considered legacy. On a user-defined bridge network, containers can resolve each other by name or alias.

翻译过来大意:就是用户自定义的网卡可以在容器之间提供自动的 DNS 解析,缺省的桥接网络上的容器只能通过 IP 地址互相访问,除非使用 --link 参数。在用户自定义的网卡上,容器直接可以通过名称或者别名相互解析。

文档中提到了 --link 参数,官方文档中已经不推荐使用

一、使用自定义网络前

 nginx服务器ping的结果如下

mysql_test服务器ping的结果如下:

但是互相ping名字的话,会出现服务找不到的问题。

一、使用自定义网络前后

新建自定义桥接网络,自定义网络默认使用的是桥接网络bridge

自定义网络

docker network create my_network

# 启动mysql容器,并指定自定义的网络 

docker run --name mysql_dev --network my_network \
-v /var/lib/docker/volumes/mysql_dev/conf:/etc/mysql/conf.d \
-v /var/lib/docker/volumes/mysql_dev/logs:/var/log/mysq \
-v /var/lib/docker/volumes/mysql_dev/data:/var/lib/mysql \
-e  MYSQL_ROOT_PASSWORD=root -d -i -p 3308:3306  mysql:latest  --lower_case_table_names=1

得到mysql_dev的IP地址为172.18.0.2,使用ping命令发现是可以访问到

通过容器名称,使用ping命令发现也是可以访问到

 

标签:容器,网段,network,自定义,网络,网卡,mysql,Docker
From: https://www.cnblogs.com/ossbar/p/17813100.html

相关文章

  • docker部署django项目
    docker部署django项目在你项目路径下:requirement.txt,Dockerfile,uwsgi.iniDockerfileFROMpython:3.6MAINTAINERtigerEXPOSE8080ADD./requirement.txt/home/RUNpipinstall-r/home/requirement.txt-ihttps://pypi.douban.com/simple/RUNpipinstalluwsgi-iht......
  • mysql自定义函数
    自定义函数在MySQL中,您可以使用自定义函数来扩展数据库管理系统的功能。自定义函数允许您封装一段可重用的代码,并在查询和其他操作中调用它。以下是在MySQL中创建和使用自定义函数的一般步骤:1、创建自定义函数语法:CREATEFUNCTIONfunction_name(parameters)RETURNSreturn_t......
  • Docker部署Homarr | 体验感极佳的NAS导航页
    一、简介Homarr是一个简单而轻量级的服务器主页,可帮助您在一个地方轻松访问所有服务。它与您用于在主页上显示信息的服务集成二、搭建Homarr绿联DX4600为例,首先我们打开Docker管理器,进入镜像管理,然后在镜像仓库中搜索truecharts/homarr​,选择latest​版本并下载。​​......
  • docker安装及安装redis
    一、安装docker1.准备安装环境:yuminstall-yyum-utils2.设置镜像仓库为阿里云:yum-config-manager\--add-repo\http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3.更新系统yum软件索引:yumcleanallyummakecache4.安装docker:yuminstalldocker-c......
  • docker于centos7下的安装配置
    docker于centos7下的安装配置导航目录docker于centos7下的安装配置导航一、安装前的环境配置检查自己版本,必须是centos7以及以上版本cat/etc/redhat-release卸载旧版本(如果之前没有安装过,这步可以忽略)yum安装gcc相关安装需要的软件包设置镜像源更新yum软件包索引二、安装docke......
  • revit中查看默认快捷键及自定义快捷键
      ......
  • (uniapp)小程序实现自定义弹框,自定义样式showmodal
    在components里新建自定义弹框组件——modal.vue<template><!--自定义弹窗--><viewclass="_showModal"v-show="show"><viewclass="_shade"></view><viewclass="_modalBox">......
  • 使用PIO自定义每一个格子的属性和值,完全DIY--Excel,不整齐也可以实现
    常规表格样式的Excel导出,有一种不是常规表格样式的Excel导出,比如如下这种怎么办快速的excel框架API肯定不支持这种所以我们需要自定义格子的内容privateCellStylegetCellStyle2(XSSFWorkbookworkbook,intx){Fontfont2=workbook.createFont();......
  • docker私有仓库搭建
    1拉取私有仓库镜像dockerpullregistry2启动容器dockerrun-di--name=registry-p5000:5000registry3打开浏览器输入地址http://10.0.0.100:5000/v2/_catalog看到{"repositories":[]}表示私有仓库搭建成功并且内容为空4配置1修改daemon.jsonvi/etc/docker......
  • 分享一个 Docker 图形化工具 Portainer安装并实现远程访问
    Portainer是一个轻量级的容器管理工具,可以通过Web界面对Docker容器进行管理和监控。它提供了可视化的界面,使得用户可以更加方便地管理Docker容器、镜像、网络和数据卷等资源。下面介绍如何将本地Portainer管理界面结合cpolar内网穿透工具实现远程任意浏览器访问!远程访问......