首页 > 其他分享 >Docker中Docker网络-理解Docker0与自定义网络的使用示例

Docker中Docker网络-理解Docker0与自定义网络的使用示例

时间:2024-07-30 09:39:52浏览次数:15  
标签:容器 自定义 示例 -- 网络 Docker docker

场景

CentOS7中Docker的安装与配置:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119028701

在上面安装好Docker之后。

关于对Docker中默认docker0以及自定义网络的使用进行学习。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

理解docker0

docker 是如果处理容器网络访问的?

为了测试,运行一个tomcat

docker run -d --name tomcat01 tomcat

我们从宿主机ping容器的ip

 

此时网络是通的。

Docker如何获取某个容器的ip等信息

docker inspect 3aaf

后面跟的是容器id或容器名称

此时查看宿主机网络

ip addr

发现每启动一个docker容器,docker就会给docker容器分配一个ip,

我们只要安装了docker,就会有一个docker0桥接模式,使用的技术是veth-pair技术。

此时我们再启动一个容器测试

docker run -d --name tomcat02 tomcat

发现又多了一对网络

 

我们发现这个容器带来网卡,都是一对对的veth-pair 就是一对的虚拟设备接口,

他们都是成对出现的,一端连着协议,一端彼此相连。

正因为有这个特性 veth-pair 充当一个桥梁,连接各种虚拟网络设备的OpenStac,

Docker容器之间的连接,OVS的连接,都是使用evth-pair技术。

来测试下tomcat01和tomcat02容器内是否互通

发现这两个容器是可以互通的。

如果发现Docker容器内在Ping时提示找不到ping命令

Docker容器内ping时提示:

bash: ping: command not found

执行如下两条命令

apt update

apt install iputils-ping

那么在ping时如何知道某个Docker容器的ip?

docker inspect 3aaf

后面跟的是docker容器的id

结论:

tomcat01和tomcat02公用一个路由器,docker0。

所有的容器不指定网络的情况下,都是docker0路由的,

docker会给我们的容器分配一个默认的可用ip。

图示:

 

只要容器删除,对应的网桥一对就没了!

Docker中自定义网络,自定义网络添加容器

思考一个问题,某些场景下比如微服务环境下需要使用容器名称/服务名称进行访问,或者ip需要更换迁移的情况下。

那么上面默认的docker0网络可以使用容器名进行访问吗?

可以测试下

 

发现使用容器名是ping不通的。

查看所有的docker网络

docker network ls

 

docker的网络模式:

bridge :桥接 docker(默认,自己创建也是用bridge模式)

none :不配置网络,一般不用

host :和所主机共享网络

container :容器网络连通(用得少!局限很大)

其中

我们直接启动的命令 --net bridge,而这个就是我们得docker0

bridge就是docker0

docker run -d -P --name tomcat01 tomcat

等价于 =>

docker run -d -P --name tomcat01 --net bridge tomcat

docker0,特点:默认,域名不能访问。 --link可以打通连接,但是很麻烦!且不建议使用--link的方式。

所以我们自定义网络

Docker中自定义网络的语法

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

这个例子中,我们创建了一个名为mynet的自定义网络,使用了 bridge 驱动,并指定了一个子网和网关。

这样配置后,连接到这个网络的容器将会在这个指定的子网内,并且默认情况下可以通过指定的网关进行通信。

此时再查看网络列表

 

还可以查看该自定义网络的详情

docker network inspect mynet

后面跟的是自定义网络的名称

 

此时启动容器时就可以指定网络

启动如下两个容器

docker run -d -P --name tomcat-mynet-01 --net mynet tomcat

docker run -d -P --name tomcat-mynet-02 --net mynet tomcat

此时这两个容器通过ip和名称都可以互通

 

Docker自定义网络如何添加已经运行的容器

上面使用默认docker0的容器如果想使其与自定义网络的容器互通,可以通过如下将其加入进来

docker network connect mynet tomcat01

 

此时就可以网络互通了。

标签:容器,自定义,示例,--,网络,Docker,docker
From: https://www.cnblogs.com/badaoliumangqizhi/p/18331578

相关文章

  • 一文解读Dockerfile
    一文解读Dockerfile一文解读Dockerfile前言上一篇我们说到Docker镜像及镜像分层结构,今天这一篇也跟上一篇联系比较密切,接下来我们来说一下如何使用Dockerfile来构建一个镜像。什么是DockerfileDockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指......
  • 即使使用 docker run -dit 命令,python-Docker 容器也会在运行两秒后退出
    我想从此处使用Dockerfile测试自定义kubernetes调度程序:FROMpython:3.7RUNpipinstallkubernetesCOPYscheduler.py/scheduler.pyCMDpython/scheduler.py一旦创建了映像和容器:dockerbuild-tapp.dockercontainerrun-d-it--namemy-sched......
  • 如何修复我的 Python Azure Function DevOps Pipeline 上的“找到 1 个函数(自定义)加载
    我正在尝试使用AzureDevOps构建管道将PythonAzureFunction部署到Azure门户。由于某种原因,代码被部署到服务器,但我在尝试访问端点时收到404错误。我收到一个错误,显示1functionsfound(Custom)0functionsloaded,以及在服务器上显示ModuleNotFound......
  • el-slider实现滚动条自定义分段颜色
    <template><el-sliderref="sliderRef"class="!w-80%"style="--el-slider-runway-bg-color:red;--el-slider-main-bg-color:green"v-model="speedRange"range:min="0":s......
  • Ubuntu、centos、openEuler安装docker
    目录1.在Ubuntu上安装Docker1.1更新软件包1.2安装必要的依赖1.3添加Docker的GPG密钥1.4 添加Docker仓库1.5 更新软件包1.6 安装Docker1.7启动并启用Docker服务1.8 验证安装1.9 运行测试容器1.10 非root用户运行Docker2.在CentOS上安......
  • 创建docker用户组并添加普通用户
    创建用户组并添加普通用户至该用户组1.添加Docker用户组通常,Docker会将其套接字的组设置为docker,允许docker组的用户访问套接字。首先,您需要创建一个docker组,然后将您的用户添加到该组。创建Docker组(如果还没有的话)如果还没有docker组,可以使用以下命令创建它(通......
  • 前端Vue组件化实践:打造自定义等宽tabs标签组件
    在前端开发的世界里,随着业务复杂度的提升和需求的多样化,传统的整体式开发方式已经难以满足快速迭代和高效维护的需求。组件化开发作为一种重要的解决方案,正逐渐受到广大开发者的青睐。本文将结合Vue框架,探讨如何通过组件化开发实现一个自定义等宽标签栏,并分享其在实际业务场景......
  • docker部署jenkins
    一、使用docker下载jenkins镜像https://docker-proxy-8xk.pages.dev/查询镜像dockerpulljenkins/jenkins:lts二、docker镜像拉取超时问题解决在使用docker拉取httpd的镜像时,报连接超时的问题:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/ht......
  • Python自定义排序
    Python封装了成熟的排序函数,我们只需要调用内部的sort函数,就可以完成排序。但是实际场景当中,排序的应用往往比较复杂,比如对象类型,当中有多个字段,我们希望按照指定字段排序,或者是希望按照多关键字排序,这个时候就不能简单的函数调用来解决了。1.字典排序我们先来看下最常见的字典......
  • 电脑技巧 | 你想拥有这样的自定义工具栏命令按钮吗?QTTabBar帮助你实现!
      【电脑技巧】第90期:你想拥有这样的自定义工具栏命令按钮吗?QTTabBar帮助你实现!    ......