首页 > 系统相关 >Linux网络管理

Linux网络管理

时间:2024-04-26 10:26:04浏览次数:24  
标签:容器 network 网络管理 -- 网络 Linux docker Docker

一、Docker网络概念

1、网络驱动

Docker 网络子系统使用可插拔的驱动,默认情况下有多个驱动程序,并提供核心联网功能。

  1. bridge:桥接网络,这是默认的网络驱动程序(不指定驱动程序创建的容器默认是
    bridge驱动)。
  2. host:主机网络。消除容器和主机的网络隔离,直接使用主机的网络。
  3. overlay:覆盖网络。可以将多个Docker守护进程连接,实现跨主机容器通讯
    (swarm集群)。
  4. macvlan:将MAC地址分配给容器,使容器作为网络上的物理设备。不通过Docker
    主机网络栈进行路由,直接通过MAC地址路由到容器。
  5. none:表示关闭容器的所有网络连接。常与自定义网络驱动一起使用,不适用于
    swarm。
  6. 网络插件:可以通过Docker安装和使用第三方网络插件。

2、Docker 网络驱动选用原则

  1. bridge桥接网络:最适合用于同一个Docker主机上运行的多个容器之间需要通信的
    场景。(单主机)
  2. host主机网络:最适用于当网络栈不能与Docker主机隔离,而容器的其他方面需要
    被隔离的场景。(解除容器和主机隔离)
  3. overlay网络:适用于不同Docker主机上运行的容器需要通信的场景,或者多个应
    用程序通过Swarm集群服务一起工作的场景。(多主机、集群)
  4. macvlan网络:适用于从虚拟机迁移过来的场景,或者容器需要像网络上的物理机
    一样,拥有独立MAC地址的场景。(容器需要mac)
  5. 第三方网络插件适用于将Docker与专用网络栈进行集成的场景。(订制化)

3、容器的网络模式

docker内置了四种网络模式,也可以使用自定义网络。

(1)bridge模式

桥接网络分为默认桥接网络和用户自定义桥接网络两种类型。
实现原理:桥接网络使用软件网桥,让连接到同一桥接网络的容器可以通信,没连接该网桥的容器被隔离。
工作流程:Docker守护进程启动,会在主机上创建一个名为 docker0 的虚拟网桥,启动容器时如果没有特别指定,自动连接到这个虚拟网桥。ifconfig命令可以查看到docker0虚拟网桥
语法:docker network create --driver bridge 容器

(2)host模式

host模式的容器使用host驱动,直接连接Docker主机网络栈

host模式没有为容器创建一个隔离的网络环境,容器没有隔离的网络名称空间,也不会获得一个独立的网络名称空间,而是和Docker主机共用一个网络名称空间。

容器和主机在同一个网络中,使用主机的物理网络接口,没有独立的IP地址,直接使用主机的IP地址和端口。

(3)container模式

Docker中一种较为特别的网络模式,主要用于容器和容器直接频繁交流的情况。
要点:
1.该模式指定新建的容器和现有的一个容器共享网络名称空间。
2. 新创建的容器和一个现有的指定容器共享IP地址、端口范围,不创建自己的网络接
口、IP地址。

3. 两个容器间网络不隔离,进程可通过回环网络进行通信。
4. 这两个容器和主机和其他容器存在网络隔离。

(4)none模式

none模式将容器放置在它自己的网络栈中,但是并不进行任何配置,实际上关闭了容器的网络功能。容器内部只能使用回环网络接口(127.0.0.1)。.
可用场景:

  1. 有些容器并不需要网络,例如只需要写入磁盘卷的批处理任务。
  2. 安全性要求高并且不需要联网的应用可以使用none模式。
  3. 要创建自定义网络。

(5)用户自定义网络模式

管理员可以使用Docker网络驱动(bridge、overlay、macvlan)或第三方网络驱动插件创建一个自定义的网络,然后将多个容器连接到同一个自定义网络。
特点:

  1. 连接到用户自定义网络的容器,可以使用IP地址或名称相互通信。
  2. 可以根据需要创建任意数量的自定义网络。
  3. 可以在任何时间将容器连接到这些网络。
  4. 对运行中的容器,可连接、断开自定义网络,无须重启容器。

4、容器间的通信方案

  1. bridge模式让同一个Docker网络上的所有容器在所有端口上都可以相互连接。
    注意:默认桥接网络不支持基于名称的服务发现和用户指定的IP地址,只能通过IP地址互相访问,除非创建容器时使用--link选项建立容器连接。
    语法:docker run -tid --network 网络模式 镜像

  2. host模式让所有容器都位于同一个主机网络空间中,并共用主机的IP地址栈,在该主机上的所有容器都可通过主机的网络接口相互通信。

  3. 容器通过端口映射对外部提供连接。
    语法:

  4. container模式让容器共用一个IP网络,两个容器之间可通过回环网络接口相互通信。

  5. 容器之间使用 --link 选项建立传统的容器互联。
    语法:
    docker run -idt --name 容器名 --link <源容器的名称或ID>:容器别名 镜像

  6. 容器之间通过挂载主机目录来实现相互之间的数据通信。

5、传统容器连接

创建容器时使用--link选项可以在容器之间建立连接,这是Docker传统的容器互联解决方案。
特点:

  1. 这种连接方式用来将多个容器连接在一起,并在容器之间发送连接信息。
  2. 当容器被连接时,在源容器接收容器之间建立一个 安全通道 ,关于源容器的信息能够被发送到接收容器,让接收容器可以访问源容器所指定的数据。

6、容器访问外部网络

默认情况下,容器可以主动访问到外部网络的连接,但是外部网络无法访问到容器。

使用bridge模式(默认桥接网络)的容器通过NAT方式实现外部访问,具体通过iptables(Linux的包过滤防火墙)的源地址伪装操作实现。

查看主机的 NAT 规则:iptables -t nat -vnL

7、从外部网络访问容器

默认情况下,创建的容器不会将其任何端口对外发布,从容器外部无法访问容器内部。
(1)-P发布容器所有暴露的端口
语法:
docker run -tid test-http -P httpd //创建容器使用-P选项发布httpd服务
docker port test-http //查看容器的端口映射设置
curl http://192.168.100.111:49153 //使用curl命令访问服务测试
(2)-p发布容器特定端口
语法:docker run -tid test-http -P 8848 httpd
image

案例1:映射指定地址的指定端口
docker run -tid --name test-port -p 192.168.100.111:8848:80 httpd

案例2:映射指定地址的任一端口
docker run -tid --name test-port -p 127.0.0.1::80 httpd

案例3:同时发布TCP和UDP端口
docker run -tid --name test -p 8080:80/tcp -p 8080:80/udp httpd

8、容器的网络配置语法

使用 docker run 和 docker create 命令来设置容器的网络配置的语法。

(1)设置容器的网络连接

容器启动时,可以使用 --network 选项设置容器要连接的网络,即网络模式。
none:容器为none模式,容器不使用任何网络连接,能完全禁用网络连接。
bridge:容器为bridge模式,连接到默认桥接网络,也是默认设置。
host:容器为host模式,使用主机网络栈。
container:容器为container模式,容器使用某一个容器(通过id或name来标识)的网络栈。
网络名or网络id:容器连接自定义网络,可使用自定义网络的名称或id。

(2)为容器添加网络作用域的别名

注意:网络作用域别名只支持用户自定义的网络。
两个容器互ping 《————网络别名可以互相访问
语法:
docker run -tid --network 自定义网络 --network-alias 别名 镜像 //设置网络容器别名

(3)设置容器的IP地址

使用 --network 选项启动容器连接自定义网络时,可以使用 --ip 或 --ip6 选项明确指定分配给该网络容器的ip地址。

前置使用条件:

  1. 只适用用户自定义网络;
  2. 用户自定义网络配置了子网。
    语法:
    docker run -dti --name test --network hqsnet2 --ip 10.10.0.10 镜像

(4)设置容器的网络接口MAC地址

默认情况下,容器mac地址是基于其IP地址生成。
可以通过 --mac-address 选项为容器指定一个MAC地址。
语法:
docker run -dti --name test-dns --mac-address 56:78

标签:容器,network,网络管理,--,网络,Linux,docker,Docker
From: https://www.cnblogs.com/sleep24/p/18159112

相关文章

  • linux 服务器间做时间同步
    一、首先选择一台同步阿里云时间服务器1、安装ntpyuminstallntp2、配置ntp.conf[root@localhost~]#vim/etc/ntp.conf增加restrict172.28.5.0mask255.255.255.0nomondifynotrap172.28.5.0为服务器间内网网段#Usepublicserversfromthepool.ntp.org......
  • Linux 登录后提示修改密码 怎么设置不提醒
    在Linux系统中,如果你登录后立即被提示修改密码,这通常是因为密码过期或者账户的密码有相关的策略限制。要设置不再提示,你可以修改密码的过期策略或修改账户的密码策略。以下是如何修改密码策略的步骤:以root用户登录或使用sudo。查看密码策略:根据需要修改密码策略。例如,要取消密......
  • linux(麒麟 centos7)安装7z
    1、下载7-Zip下载地址:7-Zip-程序下载  2、解压mkdir7zip--创建文件夹7zipmv7z2301-linux-x64.tar.xz7zip/--移动cd7ziptar-xvJf7z2301-linux-x64.tar.xz--解压输入ll查看解压后的文件3、安装cp7zzs/usr/local/bin/输入7zzs查看是否安装成功4......
  • 04_Linux下把驱动编译进内核
    Linux下把驱动编译进内核需求:把前面课程学习的helloworld驱动编译到内核。例子:source"drivers/redled/Kconfig"configLED_4412 tristate"LedSupportforGPIOLed" dependsonLEDSCLASS help Thisoptionenablesupportforled说明:1.source“drivers/redled......
  • 14_Linux 设备树
    一.什么是设备树?设备树是一种描述硬件资源的数据结构。它通过bootloader将硬件资源传给内核,使得内核和硬件资源描述相对独立。有了初步概念之后,我们再来一起探讨设备树的起源。二.设备树的由来要想了解为什么会有设备树,设备树是怎么来的,我们就要先来回顾一下在没有设备树之前......
  • Linux文件系统与日志分析
    目录1.inode与block(1)inode的内容(2)inode的号码(3)inode的大小(4)inode的特殊作用2.硬链接与软连接3.恢复误删的文件(1)恢复EXT类型的文件(2)恢复XFS类型的文件4.分析日志文件(1)日志文件(1)日志的功能:(2)日志文件的分类:(3)日志保存位置(2)内核及系统日志(2)日志消息的级别(3)日志记录的一般格式(3)用户日志......
  • inode(index node)是Unix、Linux和类Unix操作系统中的一个重要概念, 在Windows操作系统中
    inode(indexnode)是Unix、Linux和类Unix操作系统中的一个重要概念,用于描述文件系统中的文件或目录。每个文件或目录都与一个inode相关联。inode包含以下信息:文件或目录的权限(读、写、执行)。文件类型(普通文件、目录、符号链接等)。拥有者和所属组。文件的大小。访问、修......
  • vim查看linux文件目录,05Linux.浏览目录和文件,VIM文本编辑器
    vim查看linux文件目录,05Linux.浏览目录和文件,VIM文本编辑器一、浏览目录和文件查看目录、查看文件属性1)查看根目录/下有哪些文档或子目录,观察颜色有什么规律ls/2)以长格式显示结果,对比/bin、/usr/bin/目录详细属性ls-ld/bin/usr/bin/【-d只显示目录本身】3)......
  • linux压缩
    市面上有非常多的压缩格式:zip格式:Linux、Windows、MacOS,常用7zip:Windows系统常用rar:Windows系统常用tar:Linux、MacOS常用gzip:Linux、MacOS常用在Linux系统中操作:tar、gzip、zip这三种压缩格式tar命令语法:tar[-z-x-v-f-c-C]参数1参数2选项:-c,创建压缩文件,用于压缩......
  • linux系统管理
    1.用户、用户组创建用户useradd[-g-d]用户名选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名删除用户userdel[-r]用户名选项:-r,删除用户的HOME目录,不使用-r,删......