docker网络管理--项目三
一、Docker网络概念
1、网络驱动
Docker 网络子系统使用可插拔的驱动,默认情况下有多个驱动程序,并提供核心联网功能。
- bridge:桥接网络,这是默认的网络驱动程序(不指定驱动程序创建的容器默认是
bridge驱动)。 - host:主机网络。消除容器和主机的网络隔离,直接使用主机的网络。
- overlay:覆盖网络。可以将多个Docker守护进程连接,实现跨主机容器通讯
(swarm集群)。 - macvlan:将MAC地址分配给容器,使容器作为网络上的物理设备。不通过Docker
主机网络栈进行路由,直接通过MAC地址路由到容器。 - none:表示关闭容器的所有网络连接。常与自定义网络驱动一起使用,不适用于
swarm。 - 网络插件:可以通过Docker安装和使用第三方网络插件。
2、Docker 网络驱动选用原则
- bridge桥接网络:最适合用于同一个Docker主机上运行的多个容器之间需要通信的
场景。(单主机) - host主机网络:最适用于当网络栈不能与Docker主机隔离,而容器的其他方面需要
被隔离的场景。(解除容器和主机隔离) - overlay网络:适用于不同Docker主机上运行的容器需要通信的场景,或者多个应
用程序通过Swarm集群服务一起工作的场景。(多主机、集群) - macvlan网络:适用于从虚拟机迁移过来的场景,或者容器需要像网络上的物理机
一样,拥有独立MAC地址的场景。(容器需要mac) - 第三方网络插件适用于将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)。.
可用场景:
- 有些容器并不需要网络,例如只需要写入磁盘卷的批处理任务。
- 安全性要求高并且不需要联网的应用可以使用none模式。
- 要创建自定义网络。
(5)用户自定义网络模式
管理员可以使用Docker网络驱动(bridge、overlay、macvlan)或第三方网络驱动插件创建一个自定义的网络,然后将多个容器连接到同一个自定义网络。
特点:
- 连接到用户自定义网络的容器,可以使用IP地址或名称相互通信。
- 可以根据需要创建任意数量的自定义网络。
- 可以在任何时间将容器连接到这些网络。
- 对运行中的容器,可连接、断开自定义网络,无须重启容器。
4、容器间的通信方案
bridge模式让同一个Docker网络上的所有容器在所有端口上都可以相互连接。
注意:默认桥接网络不支持基于名称的服务发现和用户指定的IP地址,只能通过IP地址互相访问,除非创建容器时使用--link选项建立容器连接。
语法:docker run -tid --network 网络模式 镜像host模式让所有容器都位于同一个主机网络空间中,并共用主机的IP地址栈,在该主机上的所有容器都可通过主机的网络接口相互通信。
容器通过端口映射对外部提供连接。
语法:container模式让容器共用一个IP网络,两个容器之间可通过回环网络接口相互通信。
容器之间使用 --link 选项建立传统的容器互联。
语法:
docker run -idt --name 容器名 --link <源容器的名称或ID>:容器别名 镜像容器之间通过挂载主机目录来实现相互之间的数据通信。
5、传统容器连接
创建容器时使用--link选项可以在容器之间建立连接,这是Docker传统的容器互联解决方案。
特点:
- 这种连接方式用来将多个容器连接在一起,并在容器之间发送连接信息。
- 当容器被连接时,在源容器和接收容器之间建立一个 安全通道 ,关于源容器的信息能够被发送到接收容器,让接收容器可以访问源容器所指定的数据。
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

案例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地址。
前置使用条件:
- 只适用用户自定义网络;
- 用户自定义网络配置了子网。
语法:
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:78bc:8c:1d 镜像
- [未完 ]
(5)设置容器的DNS配置和主机名
- [未完 ]
二、Docker网络管理命令
docker network 是Docker 网络本身的管理命令。
1、查看网络列表
语法:docker network ls
选项:
-q //只显示id
--filter //根据条件筛选
--format //格式化输出
--no-trunc //显示完整ID
2、查看网络详细信息
执行 docker network inspect 命令查看指定网络的详细信息,参数可以是网络名称或网络ID。
语法: docker network inspect bridge
3、创建容器网络
使用 docker network create 命令创建容器网络
** 语法:**
docker network create --driver bridge --subnet 192.168.159.0/24 网络名 //创建网络时指定网段和子网掩码
选项:--gateway //指定网关
4、删除容器网络
使用 docker network rm 删除容器网络。
** 语法:** docker network rm id或网络名 //可以删除多个指定网络
5、连接\断开容器网络
使用 docker network connect 连接容器网络。
使用 docker network disconnect 断开容器网络。 //-f强制断开连接
** 语法:**
docker network disconnect bridge 容器id //只能指定容器id号
docker network connect mynet 容器id
docker网络管理--项目三的更多相关文章
- docker部署项目 <三>
使用docker运行一个控制台项目,新建一个控制台测试项目 一.安装mono,直接在网易镜像中心找下载路径 docker pull hub.c..com/library/mono:latest 二.安 ...
- Docker实战 | 第三篇:Docker安装Nginx,实现基于vue-element-admin框架构建的项目线上部署
一. 前言 在上一文中 点击跳转 通过IDEA集成Docker插件实现微服务的一键部署,但 youlai-mall 是前后端分离的项目,除了后端微服务的部署之外,当然还少不了前端工程的部署.所以本篇讲 ...
- Docker 系列六(Docker Swarm 项目).
一.前言 随着互联网快速发展,以及微服务架构的流行,服务器的压力越来越大.上一篇介绍的 Docker Compose 项目,可以将多个容器捏合在一起,实现容器间的通信,比如 Web 项目对 DB.Ca ...
- Docker学习笔记之编写 Docker Compose 项目
0x00 概述 通过阅读之前的小节,相信大家对 Docker 在开发中的应用已经有了一定的了解.作为一款实用的软件,我们必须回归到实践中来,这样才能更好地理解 Docker 的实用逻辑和背后的原理.在 ...
- CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...
- Docker网络管理机制实例解析+创建自己Docker网络
实例解析Docker网络管理机制(bridge network,overlay network),介绍Docker默认的网络方式,并创建自己的网络桥接方式,将开发的容器添加至自己新建的网络,提高Doc ...
- Docker决战到底(三) Rancher2.x的安装与使用 - 简书
原文:Docker决战到底(三) Rancher2.x的安装与使用 - 简书 image.png 当越来越多的容器化应用被部署,一个可以管理编排这些容器的工具此时就显得尤为重要了.目前容器编排领域 ...
- Docker + .NET Core(三)-两种发布方式
原文:Docker + .NET Core(三)-两种发布方式 第一种,自己手写dockerfile发布,上传至hubDocker 正常发布到文件夹中,发布文件上传至linux机器上.如 /www/a ...
- docker 实践十:docker 网络管理
本篇是关于 docker 网络管理的内容,同时也包含了 docker 网络的高级应用. 注:环境为 CentOS7,docker 19.03. docker 网络基础 docker 网络模型 在 do ...
- Docker & k8s 系列三:在k8s中部署单个服务实例
本章将会讲解: pod的概念,以及如何向k8s中部署一个单体应用实例. 在上面的篇幅中,我们了解了docker,并制作.运行了docker镜像,然后将镜像发布至中央仓库了.然后又搭建了本机的k8s环境 ...
随机推荐
- Spring Boot 中使用 JSON Schema 来校验复杂JSON数据
JSON是我们编写API时候用于数据传递的常用格式,那么你是否知道JSON Schema呢? 在数据交换领域,JSON Schema 以其强大的标准化能力,为定义和规范 JSON 数据的结构与规则提供 ...
- 这篇 DolphinScheduler on k8s 云原生部署实践,值得所有大数据人看!
在当前快速发展的技术格局中,企业寻求创新解决方案来简化运营并提高效率成为一种趋势. Apache DolphinScheduler作为一个强大的工具,允许跨分布式系统进行复杂的工作流任务调度.本文将深 ...
- FreeSWITCH对接http协议的tts服务
操作系统 :CentOS 7.6_x64 FreeSWITCH版本 :1.10.9 FreeSWITCH里面有个mod_tts_commandline模块,可以用来对接http协议的tts服务,今 ...
- Blazor开发框架Known-V2.0.8
V2.0.8 Known是基于Blazor的企业级快速开发框架,低代码,跨平台,开箱即用,一处代码,多处运行.目前已有部分客户在使用,最近客户的项目和产品,有的在Docker中运行,有的在重新升级改造 ...
- AI的那些名词
AI 是什么? Artificial Intelligence,即人工智能,1956年于Dartmouth学会上提出,一种旨在以类似人类反应的方式对刺激做出反应并从中学习的技术,其理解和判断水平通常只 ...
- C++ lambda 引用捕获临时对象引发 core 的案例
今天复习前几年在项目过程中积累的各类技术案例,有一个小的 coredump 案例,当时小组里几位较资深的同事都没看出来,后面是我周末查了两三个小时解决掉的,今天再做一次系统的总结,给出一个复现的案例代 ...
- JVM学习笔记之类装载器-ClassLoader
JVM学习笔记之类装载器-ClassLoader 本文字数:2300,阅读耗时7分钟 JVM体系结构概览 类装载器ClassLoader: 负责加载class文件,class文件在文件开头有特定的文件 ...
- 解密Prompt系列37. RAG之前置决策何时联网的多种策略
之前我们分别讨论过RAG中的召回多样性,召回信息质量和密度,还有calibration的后处理型RAG.前置判断模型回答是否要走RAG的部分我们之前只提及了自我矛盾和自我拒绝者两个方案.这一章我们再补 ...
- 小特性 大用途 —— YashanDB JDBC驱动的这些特性你都get了吗?
在现代数据库应用场景中,系统的高可用性和负载均衡是确保服务稳定性的基石.YashanDB JDBC驱动通过其创新的多IP配置特性,为用户带来了简洁而强大的解决方案,以实现数据库连接的高可用性和负载均衡 ...
- ASP.NET Core – 操作 Uri 和 Query
前言 以前就有写过了 Asp.net core 学习笔记 (操作 URL 和 Query), 但很乱, 这篇作为整理. Uri 介绍 结构: [Scheme]://[Host]:[Port][/Pat ...