首页 > 其他分享 >Docker网络详解

Docker网络详解

时间:2023-06-02 12:32:50浏览次数:35  
标签:容器 none run -- 网络 mynet 详解 docker Docker



文章目录

  • 一、理解docker0网桥
  • 二、Docker网络模式
  • 三、Docker容器互联
  • 四、自定义网络


一、理解docker0网桥

  • 安装docker的时候,会生成一个docker0的虚拟网桥。
  • 每运行一个docker容器都会生成一个veth设备对,这个veth一个接口在容器里,一个接口在物理机上

安装网桥管理工具:

yum install bridge-utils -y

brctl show 可以查看到有一个docker0的网桥设备,下面有很多接口,每个接口都表示一个启动的docker容器,因为我在docker上启动了很多容器,所以interfaces较多,如下所示:

brctl show


二、Docker网络模式

run容器时 可以使用--network选项指定容器的网络模式,Docker有以下4中网络模式:

  • bridge模式:默认 使用–network=bridge指定
  • host模式:使用–network=host指定
  • none模式:使用–network=none指定
  • container模式:使用 --network=container:NAME指定

1、bridge模式:

  • 默认选择bridge的情况下,容器启动后会通过DHCP自动获取一个地址。
docker run -itd --name bridge --net=bridge centos
docker exec -it bridge /bin/bash
ip a


2、host模式:

  • 指共享宿主机的网络
  • 如下案例:使用nginx镜像运行容器,会将80端口暴露在宿主机上面,直接宿主机就可以访问到80端口
docker run -itd --name host --net=host nginx

curl  http://127.0.0.1

3、none模式:

  • Docker 网络 none 模式不配置网络,只有 lo 网卡
docker run -itd --name none --net=none --privileged=true centos
docker exec -it none /bin/bash

ip addr


4、container模式:

  • Docker 网络 container 模式是指,创建新容器的时候,通过–net container 参数,指定其和已经存在的某个容器共享一个 Network Namespace。
  • 如下图所示,右方黄色新创建的 container,其网卡共享左边容器。因此就不会拥有自己独立的 IP,而是共享左边容器的 IP 172.17.0.2,端口范围等网络资源,两个容器的进程通过 lo 网卡设备通信。


docker run -itd --name none --net=none --privileged=true centos
docker run -itd --name client-1 --net=container:none centos  # 共享none容器网络

docker exec -it client-1 /bin/bash
ip addr

三、Docker容器互联

如果两台容器在同一个网卡情况下,使用IP地址是可以ping通对方的,但是不可以使用域名ping通对方,可以使用 --link 设置网络别名,之后使用别名访问对方。

格式如下:

docker run --link=[CONTAINER_NAME]:[ALIAS] [IMAGE][COMMAND]

列如:

docker run -itd --name nginx nginx:1.17.1

# 运行client容器,并且互联nginx容器设置别名为web
docker run -itd --name client --link=nginx:web centos:7

# 进入client容器使用别名访问nginx容器
docker exec -it client /bin/bash
curl http://web

容器互联实现方式其实是在hosts文件添加相应内容,下面是client容器hosts文件内容:

172.17.0.3	web adb40f4648f4 nginx
172.17.0.4	fe0f0b9f842a

四、自定义网络

1、自定义网络创建:

创建mynet网络:

docker network create --driver bridge --subnet 10.10.14.0/24 --gateway 10.10.14.1 mynet
docker network ls
  • –driver 网络类型(默认为bridge)
  • –subent 子网(表示一个网段)
  • –gateway 网关

创建容器时指定mynet网络 并且指定IP地址

docker run -itd --name mynet-1 --net=mynet --ip=10.10.14.10 centos

查看 mynet-1 容器详细信息

docker inspect mynet-1


2、不同网段创建的容器是否可以访问

思考:如下图,不同网段创建的容器是否可以通信呢?


docker run -itd --name Container-1 --ip=172.17.0.100 centos
docker run -itd --name Container-2 --net=mynet --ip=10.10.14.100 centos

docker exec -it Container-1 /bin/bash
ping 10.10.14.100

答案:不能通信,因为在不通网段。

如果想要实现不通网段通信则需要打通网络,如下图:


# 为Container-1打通mynet网络
docker network connect mynet Container-1

docker exec -it Container-1 /bin/bash
ping 10.10.14.100

打通网络其实就是给 Container-1 再添加一块 mynet网卡

docker inspect Container-1


标签:容器,none,run,--,网络,mynet,详解,docker,Docker
From: https://blog.51cto.com/u_14304225/6401633

相关文章

  • Docker资源配额详解
    文章目录一、针对CPU限制二、针对内存限制三、针对磁盘限制四、stress压测工具Docker通过cgroup来控制容器使用的资源限制,可以对docker限制的资源包括CPU、内存、磁盘一、针对CPU限制Docker容器针对CPU限制包括--cpu-shares、--cpuset-cpus参数。–cpu-shares:CPU使用份额控制......
  • docker-compose部署nextcloud
    一、部署nextcloud安装docker-compose[root@docker~]#curl-L"https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$(uname-s)-$(uname-m)"-o/usr/local/bin/docker-compose数据目录[root@docker~]#mkdir-p/root/nextcloud配置文件[root@dock......
  • 从小白到大佬!入门Linux系统收发网络数据包的秘密!
    Linux服务器收到网络数据包,需求经过哪些处置,一步步将数据传给应用进程的呢?应用进程发送数据包时,Linux又是如何操作将数据包发送进来的呢?今天我们就来聊聊这个话题。在准备好接纳网络数据包之前,Linux需求做很多准备工作,例如:网络子系统的初始化、协议栈的注册、网卡驱动的初始化、......
  • 设计模式详解之抽象工厂模式--企业的运行模式
    前言本文主要讲述设计模式中的抽象工厂模式,文中使用通俗易懂的案例,使你更好的学习本章知识点并理解原理,做到有道无术。一.什么是抽象工厂模式抽象工厂是23种设计模式中创建型模式的一种,抽象工厂是由多个工厂组合而成。上一章我们提到的工厂模式只存在一个抽象角色,而抽象工厂是......
  • java爬虫详解及简单实例
    java爬虫是一种自动化程序,可以模拟人类在互联网上的行为,从网站上抓取数据并进行处理。下面是Java爬虫的详细解释:1、爬虫的基本原理Java爬虫的基本原理是通过HTTP协议模拟浏览器发送请求,获取网页的HTML代码,然后解析HTML代码,提取需要的数据。爬虫的核心是HTTP请求和HTML解析。2......
  • linux下查看IP域名端口的网络是否相通命令
     linux查看IP、域名、端口的网络是否相通1.ping#检索当前域名对应的IP地址ping域名#查看IP是否相通pingIP2.tlenet#查看指定IP的端口是否相通,http默认端口为80,https默认端口为443telnetip/域名port3.wget#查看地址是否可以链接wgetip:端口4.nslo......
  • 视频美颜sdk是什么?技术解析与实现原理详解
    视频美颜技术的发展则为人们提供了一种美化自己的方式,因此,视频美颜技术成为了一个备受关注的领域。在这个领域中,视频美颜sdk技术则是实现高效美颜的关键因素之一。本文将从技术角度分析视频美颜sdk的实现原理和优势。一、视频美颜技术的概述视频美颜技术是一种基于计算机视觉和图像......
  • .net core 及 pgsql 在 Docker 中部署运行
     .netcore及pgsql在Docker中部署运行当前运行linux系统为: CentOSStreamrelease8.netsdk7.0、pgsql12.0、nginx1.14.1、docker 24.0.1在安装前,建议更新系统中依赖包:sudoyumupdate本次所用到的工具主要有:1、docker:学习;2、postg......
  • java爬虫详解及简单实例
    java爬虫是一种自动化程序,可以模拟人类在互联网上的行为,从网站上抓取数据并进行处理。下面是Java爬虫的详细解释:1、爬虫的基本原理Java爬虫的基本原理是通过HTTP协议模拟浏览器发送请求,获取网页的HTML代码,然后解析HTML代码,提取需要的数据。爬虫的核心是HTTP请求和HTML解析。2、爬虫......
  • Linux常用命令-unzip命令详解!
    在Linux系统中命令有很多,可进行磁盘管理、文件管理、文件传输、文档编辑等,而且相同功能的命令也有很多,比如解压缩命令,常用的有:tar、gzip、bzip2、zip、unzip、rar、unrar等,本文为大家详细介绍一下unzip命令,一起来看看吧。Linuxunzip命令用于解压缩zip文件。unzip为.zi......