4.Docker网络配置

2023-11-08

网络相关

IP
子网掩码
网关
DNS
端口号

子网掩码

互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。
IP 地址在设计时就考虑到地址分配的层次特点,将每个 IP 地址都分割成网络号和主机号两部分,以便于 IP地址的寻址操作。
子网掩码是 “255.255.255.0” 的网络:
最后面一个数字可以在 0~255 范围内任意变化,因此可以提供 256 IP 地址。但是实际可用的 IP
址数量是 256-2 ,即 254 个,因为主机号不能全是 “0” 或全是 “1”
子网掩码是 “255.255.0.0” 的网络:
后面两个数字可以在 0~255 范围内任意变化,可以提供 255² IP 地址。但是实际可用的 IP 地址数量
255²-2 ,即 65023 个。
IP 地址的子网掩码设置不是任意的。如果将子网掩码设置过大,也就是说子网范围扩大,那么,根
据子网寻径规则,很可能发往和本地主机不在同一子网内的目标主机的数据,会因为错误的判断而
认为目标主机是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃,使数据不能正
确到达目标主机,导致网络传输错误;如果将子网掩码设置得过小,那么就会将本来属于同一子网
内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关的负
担,造成网络效率下降。
因此,子网掩码应该根据网络的规模进行设置。如果一个网络的规模不超过 254 台电脑,采用
“255.255.255.0” 作为子网掩码就可以了,现在大多数局域网都不会超过这个数字,因此
“255.255.255.0” 是最常用的 IP 地址子网掩码;假如在一所大学具有 1500 多台电脑,这种规模的局
域网可以使用 “255.255.0.0”
网关
网关实质上是一个网络通向其他网络的 IP 地址。
路由器( Windows 下叫默认网关,网关就是路由,路由就是网关不要蒙)
规则

 

计算机的 IP 地址由两部分组成,一部分为网络标识,一部分为主机标识,同一网段内的计算机网络部分
相同,主机部分不同同时重复出现。
路由器连接不同网段,负责不同网段之间的数据转发,交换机连接的是同一网段的计算机。通过设置网
络地址和主机地址,在互相连接的整个网络中保证每台主机的 IP 地址不会互相重叠,即 IP 地址具有了唯
一性。
在计算机网络中,主机 ID 全部为 0 的地址为网络地址,而主机 ID 全部为 1 的地址为广播地址
2 个地址是不能分配给主机用的。

docker网络配置

当你安装了 docker, 它会自动创建 3 个网络,可以使用 docker network ls 命令来查看
bridge
host
当你运行一个容器的时候,可以使用 --network 参数来指定你的容器连接到哪一个网络。

bridge模式

Docker 进程启动时,会在主机上创建一个名为 docker0 的虚拟网桥,此主机上启动的 Docker 容器会连
接到这个虚拟网桥上。
虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
docker0 子网中分配一个 IP 给容器使用,并设置 docker0 IP 地址为容器的默认网关。 在主机上创建一对虚拟网卡 veth pair 设备, Docker veth pair 设备的一端放在新创建的容器中,并命名
eth0 (容器的网卡),另一端放在主机中,以 vethxxx 这样类似的名字命名,并将这个网络设备加入
docker0 网桥中。
bridge 模式是 docker 的默认网络模式,不写 --net 参数,就是 bridge 模式。

查看bridge信息

docker inspect bridge

构建容器

docker build -t spring:1.0 .

打开容器

docker run -itd --net=bridge --name cname iname

查看docker0网桥

查看容器网络

ip addr
ifconfig

 docker0就像是一个路由器,容器就像是路由器下的设备,它们在同一个网段内,可以互相ping通。

 外部访问

设置端口映射

docker run -itd --name bridge03 -p 8081:8080 spring:1.0
-p 参数可以出现多次,绑定多个端口号
docker run -itd --name bridge05 -p 8082:8080 -p 8083:8080 spring:1.0

host模式


如果启动容器的时候使用 host 模式,那么这个容器将不会获得一个独立的 Network Namespace ,而是
和宿主机共用一个 Network Namespace
容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口。
但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

 

docker run -itd --name host01 --net=host spring:1.0

创建自定义网络(自定义IP)

docker network create --subnet 127.18.0.0/16 mynet 
docker network rm xx

固定ip启动

docker run -itd --name net01 --net mynet --ip 172.18.0.2 spring:1.0

测试

docker exec -it net01 ping net02

跨网桥测试

docker exec -it net01 ping 172.0.0.2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

4.Docker网络配置 的相关文章

  • 无法连接到 macOS 上的 Docker 守护进程

    我通常更喜欢使用brew 来管理我的OSX 上的应用程序 我能够安装 docker docker compose 和 docker machine docker version Docker version 17 05 0 ce build
  • 从镜像创建 Docker 容器而不启动它

    作为我的部署策略的一部分 我使用 Upstart 管理 Docker 容器 为此 我需要从注册表中提取图像并创建一个命名容器 如建议的那样 用于运行容器的新贵脚本不会管理生命周期 https stackoverflow com questi
  • Linux 中的动态环境变量?

    Linux 中是否可以通过某种方式拥有动态环境变量 我有一个网络服务器 网站遵循以下布局 site qa production 我想要一个环境变量 例如 APPLICATION ENV 当我在 qa 目录中时设置为 qa 当我在生产目录中时
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 适用于elasticsearch 7.0.1 和 kibana 7.0.1 的 docker-compose.yml

    我在 Windows 10 上将 Docker Desktop 与 Linux 容器结合使用 并希望通过 docker compose 文件启动最新版本的 elasticsearch 和 kibana 容器 使用 6 2 4 等旧版本时一切
  • Docker Compose 保持容器运行

    我想使用 docker compose 启动一个服务并保持容器运行 这样我就可以通过 docker检查 获取它的IP地址 然而 容器总是在启动后立即退出 我尝试将 command sleep 60 和其他内容添加到 docker compo
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • Nginx docker容器代理传递到另一个端口

    我想在 docker 容器中运行 Nginx 它监听端口 80 并且当 url 以 word 开头时 我希望它 proxy pass 到端口 8080api 我有一些网络应用程序侦听端口 8080 这在没有 docker 的情况下对我来说一
  • 如何在Linux内核源代码中打印IP地址或MAC地址

    我必须通过修改 Linux 内核源代码来稍微改变 TCP 拥塞控制算法 但为了检查结果是否正确 我需要记录 MAC 或 IP 地址信息 我使用 PRINTK 函数来打印内核消息 但我感觉很难打印出主机的MAC IP地址 printk pM
  • Linux 内核标识符中前导和尾随下划线的含义是什么?

    我不断遇到一些小约定 比如 KERNEL Are the 在这种情况下 是内核开发人员使用的命名约定 还是以这种方式命名宏的语法特定原因 整个代码中有很多这样的例子 例如 某些函数和变量以 甚至 这有什么具体原因吗 它似乎被广泛使用 我只需
  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • PHP-docker容器中的环境变量

    我想在我的 docker 容器中显示一个环境变量 PHP 脚本如下所示 我使用 OpenShift 来启动容器 PHP 容器显示 env is 现在我更改容器的 dc 配置 oc env dc envar USER Pieter deplo
  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • ASP .NET Core 在 Heroku 上出现 System.Net.Sockets.SocketException 错误

    我正在尝试将 NET core Web API 部署到 Heroku 下面是我的Dockerfile FROM mcr microsoft com dotnet core aspnet 2 1 AS runtime WORKDIR app
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少
  • 如何从容器内运行 podman?

    我想跑podman https podman io作为运行 CI CD 管道的容器 但是 我不断从 podman 容器中收到此错误 podman info ERRO 0000 overlay is not supported over ov
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • 如何为 Azure Service Fabric 中的 docker 容器指定命令行参数

    我有一个泊坞窗图像wiremock net nano https hub docker com r sheyenrath wiremock net nano 它接受额外的命令行参数 例如 Port and AdminUsername 正常的

随机推荐

  • java double 小数点后两位小数_java实现double保留小数点后两位小数

    一 返回double型的 1 能四舍五入double d 114 145 d double Math round d 100 100 System out println d 2 BigDecimal ROUND HALF UP表示四舍五入
  • python冲击二级---基本库turtle,海龟绘图详解,史上最全,没有之一

    turtle 海龟绘图 海龟绘图很适合用来引导孩子学习编程 最初来自于 Wally Feurzeig Seymour Papert 和 Cynthia Solomon 于1967 年所创造的 Logo 编程语言 请想象绘图区有一只机器海龟
  • 软工实习日记14

    今天的主要工作是使用shiro框架实现权限管理以及熟悉springcloud eureka 下面将给出关键代码和流程 controller层 LoginController java PostMapping login public Str
  • AI绘画 stable diffusion Midjourney 官方GPT文档 AIGC百科全书资料收集

    教学AI绘画 AIGC工具 SD教程 推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画 AI讲话 翻译 GPU点亮AI想象空间 AIGC和
  • Prometheus 源码解读(一)

    Prometheus 源码解读 一 Prometheus 是云原生监控领域的事实标准 越来越多的开源项目开始支持 Prometheus 监控数据格式 从本篇开始 我将和大家一起阅读分析 Prometheus 源码 学习 Prometheus
  • 置换环算法

    置换环算法 2023 05 22 这是由abc302 G所带来新的算法学习 置换环 虽然但是我还是没弄懂G是怎么写的 烦死啦 置换环的作用 求出通过交换数组的元素的最少次数 来得到按照某种指定规则进行排序的数组 核心思想 将每个位置 i 上
  • 一次Binder通信最大可以传输多大的数据?

    前言 在第六章中 我通过匿名共享内存的方式解决Binder通信是无法传递大数据的问题 一次Binder通信最大可以传输是1MB 8KB PS 8k是两个pagesize 一个pagesize是申请物理内存的最小单元 但是这个答案对不对呢 我
  • Qt编程遇到的typedef

    一 主要用法 1 定义一种类型的别名 typedef char Pchar 那么char a等价于Pchar a 用typedef定义变量别名的好处在于如果遇到不同平台对数据类型的不同支持 可以只在typedef定义处进行修改 2 方便结构
  • pkg-config 用法简介

    pkg config 用法简介 当我们写代码时 经常会调用第三方的库 这些第三方的库的安装路径在每台电脑上可能都会不同 所以如果我们把这些库的路径写死 那么别人拿到我们的代码编译时就会遇到各种问题 为了解决这个问题 就有了 pkg conf
  • Oracle 11g 下载及安装教程

    下载Oracle 11g R2 for Windows版本 官网的下载地址 Oracle 1of 2 Oracle 2of 2 但是亲测该服务器为美国服务器 下载速度简直不要太难受 因此附上网盘链接 Oracle百度网盘下载地址 点击自动跳
  • Spring MVC 教程,快速入门,深入分析

    资源下载 Spring MVC 教程 快速入门 深入分析V1 1 pdf SpringMVC核心配置文件示例 rar 作者 赵磊 博客 http elf8848 iteye com 目录 一 前言 二 spring mvc 核心类与接口 三
  • TP5 Fatal error: Class 'think\Route' not found

    1 使用验证码了时 使用Composer安装think captcha扩展包 composer require topthink think captcha 报错 Fatal error Class Route not found in D
  • Java实现在线打开编辑保存PPT

    项目中有时会需要在线打开PPT并编辑保存 pageoffice可以完美调用本地office在线打开ppt文件 跟本地打开效果一样 还可以在线打开word excel pdf等文件 在线办公系统需要用到的功能基本都可以实现 效果还是挺不错的
  • 知乎搬运副业项目,适合新手的创业项目

    今天刷抖音发现一个账号 主要写知乎故事的 只有4个作品 涨粉700多 点赞2600 在抖音上搜索了一下 发现有一些类似的账号 作品不多 但涨粉蛮快的 看来这种账号蛮受大家欢迎的 是个不错的网络创业项目 经朋友分析测试 找知乎热门故事做素材涨
  • Android-Tangram模型:淘宝、天猫都在用的UI框架模型你一定要懂

    3 应用场景 常规业务 中 复杂的布局格式混排 如 浮动布局 栏格布局 通栏布局 一拖N布局 瀑布流布局 还可以组合使用这些布局 具体场景是 如电商平台首页 活动频道等等 Tangram 模型目前已在手机天猫 淘宝 Android 版内广泛
  • org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state wo

    90 的hive数据库初始化失败的原因都是配置文件没整明白 咱们可以看看hive env sh template 这句话的意思是 lt 警告 这个文件是自动生成的 只用于文档的目的 gt lt 警告 你对这个文件所做的任何修改都将被Hive
  • VCSA服务重启命令

    Sphere Web Client界面的服务分别是 vmware mbcs vmware netdumper vmware rbd watchdog 分别执行命令确认 首先执行命令 service control status vmware
  • python实现-逆波兰式-进阶-基本计算器

    作者 芝士小熊饼干 系列专栏 数据结构 蓝桥杯 算法 坚持天数 21天 逆波兰式 chat gpt分析 逆波兰表达式 Reverse Polish Notation RPN 也称为后缀表达式 是一种不需要括号来表示运算符优先级的数学表达式表
  • 【BingGPT对话记录】基于格的密码学简介

    格密码学是一种基于格 lattice 的数学结构的密码学分支 它具有抵抗量子计算攻击的特性 格是一个由线性无关向量生成的离散点集 可以用来描述许多复杂的几何和代数问题 格密码学的安全性通常建立在最坏情况下的难度假设上 即即使给定最优化算法
  • 4.Docker网络配置

    网络相关 IP 子网掩码 网关 DNS 端口号 子网掩码 互联网是由许多小型网络构成的 每个网络上都有许多主机 这样便构成了一个有层次的结构 IP 地址在设计时就考虑到地址分配的层次特点 将每个 IP 地址都分割成网络号和主机号两部分 以便