Docker(四):网络管理

2023-05-16

Docker网络管理

  • 一:Docker网络介绍
    • 1.1 none 网络
    • 1.2 host 网络
    • 1.3 Container
    • 1.4 Bridge
  • 二:端口映射

一:Docker网络介绍

Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络
docker安装后提供三种网络模式:

root@unode01:~/docker# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
4f3c6b18b22b        bridge              bridge              local
7725e4fc9bf6        host                host                local
10d3b60156b1        none                null                local

bridge:表示桥接网络(不是物理桥,是NAT桥),如 docker0网卡,既扮演二层的交换设备,又扮演二层的网卡设备,如果不给该网卡IP地址,它就是交换机;给它IP地址既能当交换机,又能充当网卡。每创建一个容器会创建一对网卡,一半在容器里,一半在宿主机上(也就是使用ip addr命令出来的类似 veth550cec7@if40 的网卡)且该网卡还被关联到 docker0 网卡上

apt install -y bridge-utils
root@unode01:~/docker# brctl show
bridge name     bridge id               STP enabled     interfaces
docker0         8000.02425013153d       no              vethfeaf0ad  # 目前docker0网卡只关联了vethfeaf0ad,因为本机上只运行了一个容器
root@unode01:~/docker# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:70:0d:3c brd ff:ff:ff:ff:ff:ff
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
    link/ether 02:42:50:13:15:3d brd ff:ff:ff:ff:ff:ff
13: vethfeaf0ad@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default
    link/ether 9a:24:fc:00:d0:3a brd ff:ff:ff:ff:ff:ff link-netnsid 0
# 其中vethfeaf0ad@if12中的 if12 就表示另外的一半网卡,没显示出来,是因为这一半在容器中

1.1 none 网络

故名思议,none 网络就是什么都没有的网络。挂在这个网络下的容器除了 lo,没有其他任何网卡。容器创建时,可以通过 --network=none 指定使用 none 网络。

root@unode01:~/docker# docker run -it --network=none busybox

我们不禁会问,这样一个封闭的网络有什么用呢?其实还真有应用场景。封闭意味着隔离,一些对安全性要求高并且不需要联网的应用可以使用 none 网络。比如某个容器的唯一用途是生成随机密码,就可以放到 none 网络中避免密码被窃取。当然大部分容器是需要网络的,我们接着看 host 网络。

1.2 host 网络

连接到 host 网络的容器共享 Docker host 的网络栈,容器的网络配置与 host 完全一样。可以通过 --network=host 指定使用 host 网络。

docker run -it --network=host busybox

相当于Vmware中的桥接模式,与宿主机在同一个网络中,但没有独立IP地址。众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
例如,我们在10.10.0.186/24的机器上用host模式启动一个含有nginx应用的Docker容器,监听tcp80端口。

# 运行容器;
$ docker run --name=nginx_host --net=host -p 80:80 -d nginx
74c911272942841875f4faf2aca02e3814035c900840d11e3f141fbaa884ae5c
# 查看容器;
$ docker ps  
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
74c911272942        nginx               "nginx -g 'daemon ..."   25 seconds ago      Up 25 seconds                           nginx_host

当我们在容器中执行任何类似ifconfig命令查看网络环境时,看到的都是宿主机上的信息。而外界访问容器中的应用,则直接使用10.10.0.186:80即可,不用任何NAT转换,就如直接跑在宿主机中一样。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

$ netstat -nplt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      27340/nginx: master

1.3 Container

在理解了host模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

1.4 Bridge

当Docker server启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。接下来就要为容器分配IP了,Docker会从RFC1918所定义的私有IP网段中,选择一个和宿主机不同的IP地址和子网分配给docker0,连接到docker0的容器就从这个子网中选择一个未占用的IP使用。如一般Docker会使用172.17.0.0/16这个网段,并将172.17.0.1/16分配给docker0网桥(在主机上使用ifconfig命令是可以看到docker0的,可以认为它是网桥的管理接口,在宿主机上作为一块虚拟网卡使用)。单机环境下的网络拓扑如下,主机地址为10.10.0.186/24。
Docker Bridge网络模式

二:端口映射

Docker 端口映射
随机端口映射:

[root@node01 ~]# docker run --name nginx01 -d -P nginx				# 端口随机映射
a0ca86041540075ae7e0af2c4cfc0d0e85b485b392baf70a42579d2d1105425e 
[root@node01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
9583a1aec364        nginx               "nginx -g 'daemon ..."   7 seconds ago       Up 6 seconds        0.0.0.0:32768->80/tcp   silly_einstein
# -P 随机映射;上面PORTS列意思为:宿主机的32768端口映射到容器中的80端口

指定端口映射:

[root@node01 ~]# docker run --name mynginx -d -p 81:80 nginx 			# 指定端口映射
aeae43372d87bd7b5fd42f86b8f9e65891fb35d34c3cfb7deb88eedc115e2f49
[root@node01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
aeae43372d87        nginx               "nginx -g 'daemon ..."   44 seconds ago      Up 44 seconds       0.0.0.0:81->80/tcp   mynginx

只查看docker的端口映射信息:

[root@node01 ~]# docker port mynginx
80/tcp -> 0.0.0.0:81

多端口映射:

[root@node01 ~]# docker run -d -p 443:443 -p 82:80 --name nginxv2 nginx
71de53fc39cc833119731c233c0b112439acc6d49b099c2344af42ed689f3370
[root@node01 ~]# docker port nginxv2
80/tcp -> 0.0.0.0:82
443/tcp -> 0.0.0.0:443
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker(四):网络管理 的相关文章

  • 解决Ubuntu18.04搜狗输入法无法使用的问题

    win10 43 Ubuntu18 04双系统 如果按照按照官网的教程直接安装 xff0c 大概率安装好以后是无法使用的 xff0c 可尝试如下方法修复 xff0c 已亲测多台电脑 xff0c 均成功 1 先卸载掉fcitx xff0c 及
  • 树莓派4B ubuntu mate 20.04 安装xrdp实现远程登录 可以用windows自带的mstsc远程

    树莓派4B安装Ubuntu Mate后 xff0c 开启远程桌面xrdp服务可以使用mstsc远程登录访问 xff1a 安装步骤 xff1a 控制台输入命令 sudo apt get install xrdp 安装后重启xrdp服务 xff
  • STM32F103程序设计-6-引脚输入功能-按键(查询)

    检测单片机引脚上的电平 xff0c 即使用单片机的输入功能 把上次的例程中初始化控制 LED的 GPIO 口的部分拿出来放到一个函数 LED Iint 中 注意 xff0c 初始化时先在 LED Iint 的最后点亮 LED xff0c 目
  • Python日志按时间自动切分——基于logging

    1 TimedRotatingFileHandler 1 简介 TimedRotatingFileHandler是logging内置的可设置固定时间间隔的日志记录类 xff0c 直接调用进行实例化和配置就可以实现日志的按时间自动切分 关键参
  • 双系统:Windows7下安装Ubuntu16.04

    以前在本本上用过U盘做成启动盘安装 xff0c 最近在工作需要装个Ubuntu但因为没有多余U盘就使用EasyBCD进行安装 xff0c 方便快捷 1 前提准备 环境 xff1a windows7 EasyBCD 2 3 随便一搜就是了 u
  • ubuntu Anaconda3安装及配置环境变量

    一 安装 1 下载源 xff1a 下载链接 ubuntu 18 04 选择https mirrors tuna tsinghua edu cn anaconda archive Anaconda2 5 0 1 Linux x86 64 sh
  • 1.Nginx修改进程名称

    我们在通过ps ef grep nginx 查看Nginx的进程时 xff0c 会发现显示的名称有些与众不同 xff0c 如下所示 root 64 test home test ps ef grep nginx root 2047 1 0
  • ios学习笔记: TableView利用label调整cell高度

    tableView中 xff1a CGFloat tableView UITableView tableView heightForRowAtIndexPath NSIndexPath indexPath 模拟数据 MC EatCommen
  • 关于地址栏里的 #

    的含义 URL中的hash 代表网页中的一个位置 xff0c 其右边的字符 xff0c 就是该位置的标识符 比如 xff1a http www example com index html print 就是代表index html中的pri
  • 枚举的字符串表示形式

    我有以下列举 xff1a public enum AuthenticationMethod FORMS 61 1 WINDOWSAUTHENTICATION 61 2 SINGLESIGNON 61 3 但是问题是 xff0c 当我要求Au
  • 解决codeforces访问慢的问题

    解决codeforces访问慢的问题 参考文章 xff1a xff08 1 xff09 解决codeforces访问慢的问题 xff08 2 xff09 https www cnblogs com Howe Young p 4101047
  • gitee码云完整使用教程(部署与克隆)

    1 创建仓库 登录码云 Gitee 基于 Git 的代码托管和研发协作平台创建一个仓库 2 使用git在本地初始化 xff08 1 xff09 新建一个目录 xff0c 存放下载下来的项目 xff0c 我在D盘新建了一个 gitspace
  • 修改Win10右键菜单

    目录 前言一 Win10右键菜单类型二 删除第一种类型三 删除第二种类型更新 2023 4 17 一 关于7zip的右键选项过多二 补充几个右键菜单对应的名字 前言 在电脑装了很多软件后 xff0c 鼠标右键菜单选项也会变得特别多 xff0
  • xrdp完美实现Windows远程访问Ubuntu 16.04【包括多人桌面与原生桌面】

    xrdp完美实现Windows远程访问Ubuntu 16 04 前言 xff1a 在很多场景下 xff0c 我们需要远程连接到Linux服务器 本文是Ubuntu xff0c 传统的连接主要分为两种 第一种 xff1a 通过SSH服务 xf
  • SPI走线距离

    SPI总线的四根线中频率最高的CLK的时钟约系统主频的四分之一到二分之一之间 xff0c 约在5MHz到80MHz之间 xff0c 具体值需要看芯片的数据手册 如果芯片规定SPI的SCLK为20MHz xff0c 那么这个频率的波长是15米
  • Python使用Tesseract-OCR

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 tesseract ocr是什么 xff1f 二 Tesseract OCR 安装和使用1 引入库2 配置环境变量3 P
  • STM32F030 PB1引脚无法置高问题的解决

    一开始初始化代码如下 xff1a RCC APB2PeriphClockCmd RCC AHBPeriph GPIOB ENABLE 使能端口时钟 GPIO InitStructure GPIO Pin 61 GPIO Pin 1 GPIO
  • C++中string末尾追加char字符

    如果想在C 43 43 中的string类型末尾追加char字符 xff0c s span class token operator 61 span s span class token operator 43 span span clas
  • VMware设置虚拟机系统和主机系统在同一个网段内访问网络设备

    需要说明的是 xff0c 若主机是有线的网口连接设备 xff0c 则主机先关闭无线网络再打开虚拟机系统 xff0c 虚拟机系统即可正常连接设备 然后主机若需要使用无线网络再打开无线网络即可
  • 视频转GIF太模糊了吗?我来教你使用FFmpeg生成高清GIF!!!

    有钱能使鬼推磨 xff0c 昨天40多个阅读 xff0c 没有一个人给我实在是太惨了 xff0c 所以 xff0c 再来个第二弹吧 xff01 那么这次的主题 xff0c 就是教你如何通过视频生成高清的GIF图片 xff01 xff01 恩

随机推荐

  • PHP实现自定义if条件、动态if条件判断(店铺会员卡等级规则判断的实现)

    首先抛出一个问题 xff1a span class token comment 前端输入的字符 span span class token variable logic span span class token operator 61 s
  • Mac地址、IP、子网掩码、网关、DNS

    MAC xff08 Media Access Control 介质访问控制 xff09 MAC地址是烧录在Network Interface Card 网卡 NIC 里的 MAC地址 也叫物理地址或硬件地址 是由48比特长 xff0c 16
  • CSRF修复——看完的你多了一把刷子

    近期项目对漏洞修复这一块比较看重 xff0c 例举下CSRF的修复之路吧 提到我就心累 1 CSRF是什么 CSRF xff08 Cross Site Request Forgery 跨站域请求伪造 xff09 是一种网络的攻击方式 xff
  • 数据结构课设

    项目1 xff1a 中国计算机设计大赛赛事统计 设计目标 xff1a 1 xff0c 能统计各学校的总分 2 xff0c 能按照学校编号或者名称 xff0c 将学校的总分或者各项目的总分排序输出 3 xff0c 能够按照编号查询学校某个项目
  • idea往项目中添加jar包

    1 xff0c 项目中没有lib包则自行创建 xff0c 名字设为lib xff08 项目中已经有lib包则直接进入2 xff09 xff1b 2 xff0c 将下载好的jar包拖入刚刚创建好的lib文件包中 xff1b 3 xff0c 右
  • Windows10如何向GitHub上传文件夹?

    1 首先创建GitHub的账号 xff0c 建立好你的仓库 2 找到你的仓库 xff0c 点击 code 后点击 HTTPS 并对内容进行复制 xff0c 如下图所示 xff1a 3 下载安装git xff0c 官网下载后一直next傻瓜安
  • centos7安装tomcat9

    一 首先需要安装好jdk 1 通过yum search java grep jdk查看支持的jdk软件包 2 yum install y java 1 8 0 openjdk 安装你想要的jdk软件包 3 查看是否安装成功java vers
  • Linux的优点和缺点

    Linux的优点 xff1a 1 稳定的系统 xff1a Linux是基于Unix发展出来的操作系统 xff0c 继承了Unix的稳定并有效率的特点 经常听到安装Linux的主机连续运作一年以上而不当机 不必关机是稀松平常的事 2 免费 x
  • Effective C++条款(第三版-侯杰译)

    条款一 xff1a 视C 43 43 为一个语言联邦 C 43 43 高效编程守则视情况而变化 xff0c 取决于你使用的C 43 43 哪一部分 条款二 xff1a 尽量以const xff0c enum xff0c inline替换 d
  • obj * volatile *my_free_list ;

    今天看STL源码分析看到的一句话 xff1a obj volatile my free list 首先我们要明白一件事 xff1a volatile是一个特征修饰符 xff08 type specifier xff09 volatile的作
  • Linux下搭建路由器

    客户端1 xff1a CentOS6 9 客户端2 xff1a CentOS7 3 路由器 xff1a router1 xff08 CentOS7 3 xff09 router2 xff08 CentOS7 3 xff09 r router
  • linux 搭建FTP服务器

    FTP用于计算机之间通过网络进行文件传输 你可以通过FTP在计算机账户间进行文件传输 xff0c 也可以在账户和桌面计算机之间传输文件 xff0c 或者访问在线软件归档 服务器条件 xff1a 基于VM的Ubuntu虚拟机20 04 1 保
  • FileHandler文件处理

    FileHandler文件处理 xff0c 实行文件从临时目录保存到正式目录 生成图片对象的缩略图 获取文件信息等功能 实例 xff1a 实现用户头像图片的保存 xff0c 并生成对象的缩略图 1 创建filehandler xml文件 在
  • Error: 0x8007019e

    安装和启动 旧版本的 win10 需要在 控制面板 gt 程序 gt 启用或关闭Windows功能 勾选 适用于Linux的Windows子系统 Beta 由于现在这个功能已经不再是 beta 功能了 xff0c 只要保证你的 window
  • docker下gitlab安装配置使用

    docker 安装gitlab以及使用 一 安装及配置 1 gitlab镜像拉取 gitlab ce为稳定版本 xff0c 后面不填写版本则默认pull最新latest版本 docker pull gitlab gitlab ce 拉取镜像
  • 解决VMware上字特别小的问题

    在安装了vmware tools后 xff0c 屏幕虽然变大了 xff0c 但是字还是特别小 解决方法如下 xff1a 1 找到虚拟机上设置按钮 2 选择设备按钮 3 调整分辨率 xff08 我的电脑一开始默认的分辨率特别高 xff0c 我
  • 每天修Linux系统---关于libjpeg.so.8 && 简单的安装opencv的方法

    问题如图 xff1a 为了修这个东西我真的是费尽心力 xff0c 天天念叨 xff0c 就差卸载opencv重装 重装之前试了一下结果世界都亮了哥 xff01 xff01 xff01 解决方案如图 xff1a cv2没有报错了 xff01
  • Ubuntu22.04应用程序启动时闪退

    Ubuntu22 04启动应用程序时闪退 xff0c 添加程序启动时参数解决 今天尝试在ubuntu安装QQ音乐 xff0c 安装后启动时弹出一下就闪退了 命令行启动程序 xff0c 报错 xff1a FATAL gpu data mana
  • CNN 不变性

    CNN的平移不变性 xff1a 由于全局共享权值和pool操作 xff08 明显的特征被保存下来 xff0c 与位置没有关系 xff1f xff09 CNN的尺度不变性 xff1a 没有或者说具有一定的不变性 xff08 尺度变化不大 xf
  • Docker(四):网络管理

    Docker网络管理 一 xff1a Docker网络介绍1 1 none 网络1 2 host 网络1 3 Container1 4 Bridge 二 xff1a 端口映射 一 xff1a Docker网络介绍 Docker使用了Linu