前言

Docker系列文章:

此篇是Docker系列的第八篇,大家一定要按照我做的Demo都手敲一遍,印象会更加深刻的,加油!

  1. 为什么要学习Docker
  2. Docker基本概念
  3. Docker镜像基本原理
  4. Docker容器数据卷
  5. Dockerfile
  6. Docker单机网络上
  7. Docker单机网络下

基本命令


img

--net网络模式验证


img

bridge模式已在在网络初探的小节已经验证过了,这里就不再进行验证,接下来我们主要验证的是剩下的三总模式;

none

  1. 后台方式启动一个版本为最新的centos名字为centosworktest03网络模式为none的容器;

    docker run -d -it --name centosworktest03 --net none centos:latest
  2. 交互模式进入容器内部;

    docker ps
    docker exec -it 9a97610ae54a /bin/bash
  3. 验证网络模型,当你使用yum install net-tools 安装命令的时候他会提示下载失败;

  4. 我们使用自带的ip addr来查看网路,我们会发现只有一个网络回环地址,使用none模式整个容器的网络是与其他网络隔离的;

host

  1. 后台方式启动一个版本为最新的centos名字为centosworktest04网络模式为host的容器;

    docker run -d -it --name centosworktest04 --net host centos:latest
  2. 交互模式进入容器内部;

    docker ps
    docker exec -it 2958410a53c5 /bin/bash
  3. ip addr查看网络模式,会发现与宿主机的网络模型是一致的;

container

  1. 后台方式启动一个版本为最新的centos名字为centosworktest05网络模式为container的容器采用centosworktest的网络模式;

    docker run -d -it --name centosworktest05 --net container:centosworktest centos:latest
  2. 交互模式进入容器内部;

    docker exec -it 0a8ea7a39e1a /bin/bash
  3. ip addr查看网络模式,会发现与容器centosworktest的网络模式是一致的;

--link

容器在启动的IP地址是动态分配的,如何做到本地服务的发现?也就是说容器的IP变了,如何还能够调用到对应的服务,link可以通过名称调用来解决这个问题,但是不推荐使用link来解决该问题,这里的介绍只是来了解一下这个知识点的优缺点。

使用

简单介绍一下我们的案例,这里我们使用的容器名称为centosworktest03的容器,该容器的网络膜模型为none,只能在网络内部通信,我们使用--link启动一个centoslinktest的容器,来测试link的作用。这里我们因为centosworktest03容器一直在启动着,我们就直接启动centoslinktest做实验了。

  1. 后台方式启动一个版本为最新的centos名字为centoslinktest容器链接到centosworktest03这个容器;

    docker run -d -it --name centoslinktest --link centosworktest02:centosworktest02 centos:latest
  2. 检查容器centoslinktest与容器centosworktest02网络是否通畅;

    docker exec -it centoslinktest ping centosworktest02
  3. 检查容器centosworktest02与容器centoslinktest的网络是否通畅;

    docker exec -it centosworktest02 ping centoslinktest
  4. 查看centoslinktest的hosts文件,会发现在配置文件中存在了centosworktest02配置;

缺点
  1. link的网络是单向的,也不具备传递的特性;
  2. link的配置是静态的,当容器的IP发生改变的话,配置的链接就失效了;

自定义网络

  1. 创建一个networktest的网络,使用--subnet指定容器分配网段,使用--gateway指定网关;

    docker network create --driver bridge --subnet  192.168.1.0/24 --gateway 192.168.1.1 networktest
  2. 查看网络列表;

    docker network ls
  3. 查看具体配置docker network inspect networktest;

实战
  1. 后台方式分别启动名字叫customernetwork1和customernetwork2,网络模式为networktest的容器;

    docker run -d -it --name customernetwork1 --net networktest  centos:latest
    docker run -d -it --name customernetwork2 --net networktest  centos:latest
  2. 测试customernetwork1和customernetwork2网络的连通性,发现网络之间是联通的;

  3. 测试customernetwork1与docker0网络中容器的连通性,发现两个网络是不通的,因为属于不同的网段;

    docker exec -it e34051b19cfe ping 172.17.0.2
优点

自定义bridge网络与默认bridge网络docker0的优点如下:

  1. 自定义bridge具有更好的隔离性和容器间的互操作性,连接到同一个自定义bridge网络的容器会自动将所有端口相互暴露,并且无法连接到容器外的网络,使得容器化的应用能轻松地相互通信,并且与外部环境产生了良好的隔离性。

  2. 自定义bridge提供容器间通过名称自动发现的机制,也就是DNS解析,默认bridge网络上的容器只能通过IP地址互相访问,除非使用link命令,在用户定义桥接网络上,容器可以通过容器名称或别名来解析。

  3. 自定义bridge网络使用docker network create创建和配置。如果不同的应用程序组具有不同的网络要求,则可以在创建时分别配置每个用户定义的 bridge网络,增加了灵活性和可控性。

不同网段的容器如何通信

img
  1. 将容器centosworktest加入到自定义网络networktest中;

    docker network connect networktest centosworktest
  2. 测试centosworktest与customernetwork1的连通性,发现两个网络就是通畅的了;

结束

欢迎大家点点关注,点点赞!

Docker单机网络实战的更多相关文章

  1. docker单机网络类型

    docker单机网络类型概述 Docker 安装时会自动在 host 上创建三种网络  分别为 bridge    host   none .   可用 docker network ls 命令查看 ...

  2. Docker单机网络下

    前言 Docker系列文章: 此篇是Docker系列的第七篇,大家一定要按照我做的Demo都手敲一遍,印象会更加深刻的,加油! 为什么要学习Docker Docker基本概念 Docker镜像基本原理 ...

  3. Docker单机网络上

    前言 Docker系列文章: 此篇是Docker系列的第六篇,大家一定要按照我做的Demo都手敲一遍,印象会更加深刻的,加油! 为什么要学习Docker Docker基本概念 Docker镜像基本原理 ...

  4. Docker 单机网络

    Docker Network相关命令 root@ubuntu:~# docker network --help Usage: docker network COMMAND Manage network ...

  5. 理解Docker单机容器网络

    在” 理解Docker单机容器网络 “一文中,还有一个Docker容器网络的功能尚未提及,那就是Docker容器的端口映射.即将容器的服务端口P’ 绑定到宿主机的端口P上,最终达到一种效果:外部程序通 ...

  6. [docker]docker自带的overlay网络实战

    overlay网络实战 n3启动consul docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -b ...

  7. Docker小白到实战之Docker网络简单了解一下

    前言 现在对于Docker容器的隔离性都有所了解了,但对容器IP地址的分配.容器间的访问等还是有点小疑问,如果容器的IP由于新启动导致变动,那又怎么才能保证原有业务不会被影响,这就和网络有挂钩了,接下 ...

  8. 云计算Docker全面项目实战(Maven+Jenkins、日志管理ELK、WordPress博客镜像)

    2013年,云计算领域从此多了一个名词“Docker”.以轻量著称,更好的去解决应用打包和部署.之前我们一直在构建Iaas,但通过Iaas去实现统一功  能还是相当复杂得,并且维护复杂.将特殊性封装到 ...

  9. docker - kubernetes 网络(转)+ 架构图

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

随机推荐

  1. CPU消耗,跟踪定位理论与实践

    CPU消耗,跟踪定位理论与实践 一.性能指标之资源指标定位方案 1.打tprof报告方法 抓取perfpmr文件 60秒. perfpmr.sh 60 从结果文件中取出tprof.sum 或直接抓取t ...

  2. 多加速器驱动AGX的目标检测与车道分割

    多加速器驱动AGX的目标检测与车道分割 Object Detection and Lane Segmentation Using Multiple Accelerators with DRIVE AG ...

  3. BeetleX之Vue ElementUI生成工具

    BeetleX.WebFamily在新版本的功能中引入了一个全新的功能,通过这一功能可以大大节省UI的开发工作量.组件集成了一个图形化的UI编辑器,可以连接数据库对数据表或查询快速度生成编辑和数据查询 ...

  4. Spring Cloud05: Zuul 服务网关

    一.什么是Zuul 服务网关 Zuul 是 Netflix 提供的⼀个开源的 API ⽹关服务器,是客户端和⽹站后端所有请求的中间层,对外开放 ⼀个 API,将所有请求导⼊统⼀的⼊⼝,屏蔽了服务端的具 ...

  5. 四、配置及使用Zabbix监控系统

    要求: 沿用练习- - -,使用Zabbix监控平台监控Linux服务器,实现以下目标:1.监控CPU2.监控内存3.监控进程4.监控网络流量5.监控硬盘 方案:通过Zabbix监控平台,添加被监控z ...

  6. HTML基本标签及语法

    HTML简介 什么是HTML 本文素材来源于黑马程序员Pink老师 HTML 指的是超文本标记语言(Hyper Text Markup Language) ,它是用来描述网页的一种语言. HTML 不 ...

  7. 【NX二次开发】Block UI 指定平面

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  8. 小程序微信支付(UNIAPP+第三方SDK:binarywang)

    小程序支付流程图说明(UNIAPP+第三方SDK:binarywang) 说明:小程序为UNI-APP开发,使用的第三方微信支付SDK为binarywang提供的,此SDK对微信公众号.小程序.微信各 ...

  9. 理解css行高(line-height)

    首先我们要明确 line-height 的定义,line-height指的是两条文字基线之间的距离. 行内框盒子模型 所有内联元素的样式表现都与行内框盒子模型有关.所以这个概念是非常重要的. < ...

  10. 7、linux快捷键

    ctrl +a:切换到命令行开始 ctrl+e:切换到命令行结尾 ctrl+c:终止当前命令或脚本 ctrl+d:退出当前shell,相当于exit ctrl+l:清除当前屏幕的内容,相当于clear ...