Docker容器网络入门

news2024/11/24 5:58:38

1、查看默认网络模式

首先假定已经安装好docker了,不会安装的可以看我其他文章,很简单。docker安装好后默认是提供三种网络模式(bridge、host、none),可以使用命令docker network ls查看网络状态

[root@localhost ~]# docker network ls
NETWORK ID     NAME              DRIVER    SCOPE
93a00b5c27f9   bridge            bridge    local
a0e7ced640ef   docker_gwbridge   bridge    local
9df73a6f4d7a   host              host      local
fy142rn10t1f   ingress           overlay   swarm
fa0cdda1cb13   none              null      local

Docker底层使用LXC实现,LCX就是一种轻量级虚拟化,将linux进程沙盒化。使用的是linux中的namespace技术进行资源隔离,pid namespace隔离了进程,mount namespace隔离了文件系统,network namespace隔离了网络。而网络方面,宿主机中虚拟一个docker容器网桥,docker启动一个容器时会根据docker网桥的网段分配给容器一个ip地址,叫container-ip,这个虚拟的docker网桥也是每个容器的默认网关,因为在同一宿主机中的容器都接入的是同一个虚拟网桥,这样就达到了容器之间通过container-ip进行互相通信。

2、docker的网络模式

host:相当于玩虚拟机时,网络为桥接模式,就是和宿主机在一个网络中,没有独立的ip。就是容器和宿主机共享网络命名空间,network namespace,直接使用宿主机的ip和端口。
none: 容器有独立的network namespace,但没有任何网络设置,比如网桥连接、ip配置等
bridge:这种也是docker默认的网络模式。

container指定新容器和其他已经存在的容器共享一个网络命名空间,不是和宿主机共享。

2.1关于bridge模式

相当于虚拟机中的NAT模式,容器有独立的命名空间。docker进程启动后,主机上会创建一个名为docker0的虚拟网桥,然后主机上启动的docker容器会连接到这个虚拟网桥上。虚拟网桥工作方式和物理交换机类似,这样主机上的所有容器通过这个交换机连在了一个二层网络中,容器间就可以互相通信。

docker0子网中分配一个ip给容器使用,设置docker0的ip地址为容器默认网关,主机上创建一堆虚拟网卡配对设备vteh pair,一端在新创建的容器中,命名为eth0,,另一端在主机中,以veth类似的名字命名,将这个网络设备放到docker0网桥中,可以通过ip ad查看(不同镜像可能查看方式不一样)。

 

宿主机ifconfig截图如下:

 容器内部ip addr如下:

进入容器内部:
[root@localhost ~]# docker exec -it 397c95548b0d bash

root@397c95548b0d:/data# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
30: eth0@if31: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

以上如果出现bash: ip: command not found,

1、查看系统版本命令:cat /etc/os-release
2、apt-get update 或apt-get install yum 
3、Debian版系列命令:apt install -y iproute2  Centos版命令: yum install -y iproute2
4、root@397c95548b0d:/data# ip addr

上面提及的docker0网桥是宿主机虚拟出来,不是真实存在的网络设备,外网无法寻址访问,就是说没有办法直接通过continer-ip访问到容器,那么怎么办,就是需要将容器的端口映射到宿主机,在docker run 创建容器的时候通过-p参数启用,向外部暴露容器服务,这样就可以通过宿主机ip:容器端口访问容器应用

 通过命令查看bridge网络详细信息

 2.2 关于host模式

host模式,就是容器不会有一个独立网络命名空间,直接和宿主机共用一个网络命名空间,不会虚拟出自己的网卡,配置ip等。但是容器内的进程以及文件系统还是和宿主机隔离的。

直接使用宿主的IP地址和外界通信,容器内部端口可以使用宿主端口,不需要进行NAT,优势就是网络性能好,但是网络隔离性不好,容器使用的端口就不能再用了。

 2.3关于none模式

这种模式,就是容器有自己的网络命名空间,但是容器没有任何网络设置,docker容器没有网卡、ip、路由等信息,需要自己添加网络配置,这种模式下只有lo会换网络,可以在创建时添加参数—network none指定,这种模式没法联网,优势就是能保证容器的安全性。

3、自定义网络

我们可以通过命令docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet创建自定义网络mynet。

  • --driver bridge指定使用网络的类型,可以选择none,host,bridge任何一种;
  • --subnet 192.168.0.0/16指定子网的范围;
  • --gateway 192.168.0.1指定网关的地址;
[root@localhost ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
2187dde6db43b73e48dd2466d4c811cef9560938cc943d7b6b8d0f5ca7346bfd

然后我们查看网络docker network ls就可以看到刚刚创建的自定义网络了。

 通过docker network inspect mynet查看自定义网络的详细信息:

 启动容器指定网络

[root@localhost ~]# docker run --net mynet --name some-redis_mynet -d redis
c07cc300f8f80274cf32701922864f640b8212b2e5beb9edef05a1236f5852d4

 将之前已经启动的容器加入到新的网络

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS      NAMES
c07cc300f8f8   redis     "docker-entrypoint.s…"   5 seconds ago   Up 3 seconds   6379/tcp   some-redis_mynet
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE             COMMAND                  CREATED             STATUS                        PORTS      NAMES
c07cc300f8f8   redis             "docker-entrypoint.s…"   43 seconds ago      Up 42 seconds                 6379/tcp   some-redis_mynet
397c95548b0d   redis             "docker-entrypoint.s…"   32 minutes ago      Exited (0) 9 minutes ago                 some-redis
e50477739e85   tomcat            "catalina.sh run"        About an hour ago   Exited (143) 42 minutes ago              romantic_noyce
9dcb77aae8cb   tomcat            "catalina.sh run"        About an hour ago   Created                                  laughing_rhodes
424301c888ec   tomcat            "catalina.sh run"        About an hour ago   Created                                  silly_jennings
44a58ac2df2f   tomcat            "catalina.sh run"        About an hour ago   Exited (143) 42 minutes ago              wonderful_babbage
97d68600c558   jenkins/jenkins   "/usr/bin/tini -- /u…"   7 weeks ago         Exited (143) 7 weeks ago                 jenkins
5d6a65567304   mysql:5.7         "docker-entrypoint.s…"   8 weeks ago         Exited (0) 9 minutes ago                 first-mysql
[root@localhost ~]# docker start 397c95548b0d
397c95548b0d

  通过docker network inspect mynet查看自定义网络的详细信息:

  通过docker network inspect mynet查看自定义网络的详细信息:

我们会发现原来在别的网段下的some-redis容器也被加入到mynet自定义网络中来了。此时tsome-redis容器就会同时拥有两个IP地址。

未完待续~

docker容器网络入门https://baijiahao.baidu.com/s?id=1746188280713186837&wfr=spider&for=pcDocker网络互联原理及自定义网络的使用 - 简书一、默认网络 Docker默认在安装好的时候就会自动创建三个网络,我们可以使用docker network ls看到如下的三个网络信息。 none,指没有网络,如果容器启动的...https://www.jianshu.com/p/d4bb218ec465

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/87064.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

构建平衡二叉树(数据结构)

构建二又平衡树&#xff0c;插入的节点序列依次为:70 60 40 90 80 98 我们先了解一个构造规则 1、将每一个节点按照顺序依次使用 2、先将第一个节点画在图上&#xff0c;将第二个节点与第一个节点比较&#xff0c; &#xff08;1&#xff09;若比该节点大&#xff0c;第二个…

飞行员兄弟(蓝桥杯C/C++B组真题详解)

目录 题目链接&#xff1a;116. 飞行员兄弟 - AcWing题库​​​​​​ 题目思路&#xff1a; 代码详解&#xff1a; 题目链接&#xff1a;116. 飞行员兄弟 - AcWing题库​​​​​​ 题目思路&#xff1a; 1.我们可以知道 对于任意一个点 重复的按两次的话 回不改变原状…

ADI Blackfin DSP处理器-BF533的开发详解43:图像处理专题-ReverseColor (图像反色处理)(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像反色处理&#xff0c;代码运行时&#xff0c;会通过文件系统打开工程文件根目下" …/ImageView"路径中的 tes…

Linux下局域网yum源配置

文章目录一 需求二 搭建环境准备三 服务端1 创建镜像存放目录与挂载目录2 上传centos7镜像3 对镜像文件进行挂载4 配置本地yum源5 对挂载点建立软链接6 安装http服务7 浏览器验证http服务是否正常启动四 客户端1 修改yum配置文件2 查看yum源一 需求 公司集群架构中&#xff0c…

【linux】之大数据基础平台实施及运维上

一、大数据介绍 学习目标 能够了解为什么使用大数据技术 能够了解大数据指的是什么 为什么使用大数据技术&#xff1f; 数据量越来越大 数据量越来越大数据分析的实时性越来越强数据结果的应用越来越广泛 结论&#xff1a;我们需要使用大数据技术 大数据的定义 大数据是收…

GC垃圾回收器

分代收集器 新生代回收器 Serial&#xff1a;复制算法 | 单线程 | 适合内存不大的场景 ParNew&#xff1a;复制算法 | 多线程 | Serial收集器多线程版本 Parallel Scavenge&#xff1a;复制算法 | 多线程 | 类ParNew&#xff0c;更关注吞吐量 老年代回收器 Serial Old&#xf…

postgresql文件结构

一、控制文件 pg_controldata $PGDATA 二、数据文件 pg中&#xff0c;每个索引、每个表都是一个单独的文件&#xff0c;pg中称为page&#xff08;也称为段&#xff09;,默认是每个大于1G的page会被分割。例如某个表有200g的大小&#xff0c;那么会被分割为200个文件存储 sel…

Gateway限流的使用

目录 1. 限流的使用场景 2. gateway限流实现 2.1 前提&#xff1a; 2.2 导入依赖包 2.3 在项目配置文件中配置redis​编辑 2.4 开发限流需要的Bean​编辑 2.5 为服务配置限流参数 2.6 压力测试 3. 熔断 3.1 熔断的使用场景 1. 限流的使用场景 为什么限流 限流就是限制…

web网页设计期末课程大作业 基于HTML+CSS+JavaScript制作八大菜系介绍舌尖上的美食5页

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

4、Metasploit系列----未知目标测试

靶机Metasploitable2&#xff1a;192.168.11.105 攻击机kail&#xff1a;192.168.11.106 一、创建工作空间 显示数据库未连接&#xff1a;使用msfdb init对数据进行初始化&#xff1a;db_status显示数据库已连接。使用命令workspace -a 192.168.11.105创建目标工作空间。二、信…

Spring Batch 批处理-作业参数校验

引言 接着上篇&#xff1a;Spring Batch 批处理-作业参数设置与获取&#xff0c;了解作业参数设置与获取后&#xff0c;本篇就来了解一下Spirng Batch 作业参数的校验。 作业参数校验 当外部传入的参数进入步骤处理时&#xff0c;我们需要确保参数符合期望。比如&#xff1a…

前端实现电子签名(web、移动端)通用

前言 在现在的时代发展中&#xff0c;从以前的手写签名&#xff0c;逐渐衍生出了电子签名。电子签名和纸质手写签名一样具有法律效应。电子签名目前主要还是在需要个人确认的产品环节和司法类相关的产品上较多。 举个常用的例子&#xff0c;大家都用过钉钉&#xff0c;钉钉上…

对于双欧拉角(正反欧拉角)的一些理解和思考

文章目录一、正反欧拉角定义二、相关文献阐述三、对正反欧拉角的思考四、参考代码五、参考文献最近看到有人讨论“双欧拉角”或者“正反欧拉角”的问题&#xff0c;因为自己之前没听说过这个概念&#xff0c;为了避免无知&#xff0c;因此找了一些文献进行学习和理解。不过基于…

mysql优化,SELECT语句创建理想索引

思考索引的问题&#xff1a; 1.为什么主键索引比非主键索引快&#xff1f; 2.为什么sql使用like关键字 “%XXX%”无法走索引&#xff0c;而“XXX%”可以&#xff1f; 3.为什么有索引的字段&#xff0c;数据量大了后&#xff0c;增删改会很慢&#xff1f; 一. 了解数据库索引的必…

ADI Blackfin DSP处理器-BF533的开发详解45:图像处理专题-ThresholdData (图像阈值分割处理)(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像阈值分割处理&#xff0c;代码运行时&#xff0c;会通过文件系统打开工程文件根目下" …/ImageView"路径中的…

Hive中数据类型介绍

文章目录数据库表分区表桶表数据库 当于关系数据库中的命名空间( namespace )&#xff0c;它的作用是将用户和数据库的应用&#xff0c;隔离到不同的数据库或者模式中 Hive中创建数据库等语法 表 Hive 的表在逻辑上由存储的数据和描述表格数据形式的相关元数据组成 元数据&a…

腾讯电竞广泛布局,难逃城市同质化怪圈?

文 | 螳螂观察 作者 | 张左文 2018年的那个夏天&#xff0c;那年的《英雄联盟》S赛&#xff0c;中国战队IG以3:0的绝对领先击败欧洲老牌冠军战队FNC&#xff0c;为LPL赛区拿下首个S赛冠军奖杯。 那是中国电竞史上浓墨重彩的一笔&#xff0c;也是腾讯电竞8年蛰伏后腾飞的开始…

​实验8 IP协议实验分析

注&#xff1a;原实验是在虚拟机中对主机使用ping命令&#xff0c;本文对www.bilibili.com使用ping命令来代替 IP分片 实验内容 wireshak开始捕获分组后&#xff0c;在cmd中输入ping www.bilibili.com -l 3000并执行 打开wireshak&#xff0c;在显示过滤器中输入icmp。得到…

展锐闪光灯 flash echo test测试

flash echo test测试 1.使用adb命令进入对应路径操作&#xff1a; adb root adb remount adb shell cd /sys/devices/virtual/misc/sprd_flash/ 输入对应命令 如上图示例&#xff1a;echo 0x0000&#xff08;0000 0000 0000 0000&#xff09; > test flash_idx: 表示…

Nacos配置管理之多环境共享

多环境配置共享 微服务启动时会从nacos读取多个配置文件&#xff1a; 1、[spring.application.name]-[spring.profiles.active].yaml 例如&#xff1a;userservice-dev.yaml 【服务名】-【环境】.yaml 2、 [spring.application.name].yaml 【服务名】.yaml 例如&#xff1a…