Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》

测试:

[root@server2 ~]# docker run -d --name demo --network=mynet1 webserver
[root@server2 ~]# docker run -it --rm --network=mynet1 busybox
/ # ip addr
/ # ping demo

这时我们发现我们是可以ping 通demo,这说明这中模式是可以给我们提供解析的

实验方法是我们再开一个webserver,停掉所有的webserver,再次开启时,顺序反一下,查看ip变化

[root@server2 ~]# docker run -d --name demo2 --network=mynet1 webserver
[root@server2 ~]# docker stop demo
demo
[root@server2 ~]# docker stop demo2
demo2
[root@server2 ~]# docker start demo2
demo2
[root@server2 ~]# docker start demo
demo
[root@server2 ~]# docker inspect  demo2
[root@server2 ~]# docker inspect  demo
[root@server2 ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS              PORTS             NAMES
474967ccbcde   webserver   "nginx -g 'daemon of…"   4 minutes ago    Up About a minute   80/tcp, 443/tcp   demo2
8095eebc598a   busybox     "sh"                     10 minutes ago   Up 10 minutes                         pedantic_kirch
94fb1a96912a   webserver   "nginx -g 'daemon of…"   11 minutes ago   Up About a minute   80/tcp, 443/tcp   demo
[root@server2 ~]# docker attach 8095eebc598a            ##进入busybox查看
/ # ping demo2
PING demo2 (172.18.0.2):
/ # ping demo
PING demo (172.18.0.4): 

总结:系统会自动分配ip,按照启动顺序ip单调递增,但是ping名称的时候会自动解析地址

2.自己定义网段

在创建时指定参数:–subnet 、–gateway

[root@server2 ~]# docker network rm mynet1             ##将原来定义的网络删掉
docker network create --subnet 172.20.0.0/24 --gateway 172.20.0.1 mynet1

[root@server2 ~]# docker inspect mynet1 

3.手动指定ip

使用–ip参数可以指定容器ip地址,但必须是在自定义网桥上,默认的bridge模式不支持,同一网桥上的容器是可以互通的。

[root@server2 ~]# docker rm demo
demo
[root@server2 ~]# docker rm demo2
demo2
[root@server2 ~]# docker run -it --rm --ip 172.20.0.10 --network mynet1 busybox
/ # ip addr

[root@server2 ~]# docker run -d --name demo webserver
[root@server2 ~]# docker run -d --name demo2 --network mynet1 webserver

4.构建双网卡机来实现不同网段间通信

桥接到不同网桥上的容器,彼此是不通信的。

docker在设计上就是要隔离不同network的。

那么如何使两个不同网桥的容器通信呢:

使用 docker network connect命令为demo添加一块mynet1 的网卡。

[root@server2 ~]# docker network connect mynet1 demo
[root@server2 ~]# docker inspect  demo

三、Docker容器通信

容器之间除了使用ip通信外,还可以使用容器名称通信。

docker 1.10开始,内嵌了一个DNS server。

dns解析功能必须在自定义网络中使用。

启动容器时使用 --name 参数指定容器名称。

Joined容器一种较为特别的网络模式。

在容器创建时使用–network=container:vm1指定。(vm1指定的是运行的容器名)

[root@server2 ~]# docker run  -it --rm --network container:demo busybox
/ # ip addr

和刚才的ip一样

处于这个模式下的 Docker 容器会共享一个网络栈,这样两个容器之间可以使用localhost高效快速通信。

–link 可以用来链接2个容器。

–link的格式:

–link :alias

name和id是源容器的name和id,alias是源容器在link下的别名。

[root@server2 ~]# docker pull nginx:latest
[root@server2 ~]# docker run -d --name demo nginx
[root@server2 ~]# docker run -it --rm --link demo:nginx busybox
/ # env

/ # ping demo
/ # ping nginx

这里需要重新连接一个server2进行测试

[root@server2 ~]# docker stop demo 
[root@server2 ~]# docker run -d --name demo2 nginx
[root@server2 ~]# docker start demo

我们再一次ping,发现ip变了,但是仍然可以ping名字,

这时我们查看/etc/hosts,发现他已经给我们自动修改了解析

容器如何访问外网是通过iptables的SNAT实现的

外网如何访问容器:

端口映射

-p 选项指定映射端口

[root@server2 ~]# docker rm -f demo
demo
[root@server2 ~]# docker rm -f demo2
demo2
[root@server2 ~]# docker run -d --name demo -p 80:80 nginx
[root@server2 ~]# docker run -d --name demo2 -p 8080:80 nginx
[root@server2 ~]# iptables -t nat -nL

外网访问容器用到了docker-proxy和iptables DNAT

宿主机访问本机容器使用的是iptables DNAT

外部主机访问容器或容器之间的访问是docker-proxy实现

测试:


相关文章
|
7天前
|
物联网 5G SDN
5G 网络架构全解析:RAN、核心网和接入网
5G 网络架构全解析:RAN、核心网和接入网
39 8
|
4天前
|
存储 安全 算法
网络安全的盾牌与利剑:漏洞防范与加密技术解析
【9月更文挑战第31天】在数字时代的浪潮中,网络安全成为守护个人隐私和组织资产的重要屏障。本文将深入探讨网络安全中的两大关键要素:安全漏洞和加密技术。我们将从漏洞的类型、检测方法到如何有效修补,逐一剖析;同时,对加密技术的基本原理、应用实例进行详细解读。文章旨在为读者提供一套实用的网络安全知识框架,帮助提升网络防护意识和技能,确保在日益复杂的网络环境中保护好每一份数据。
17 3
|
5天前
|
SQL 监控 安全
网络安全与信息安全的全面解析##
本文深入探讨了网络安全和信息安全的重要性,揭示了一系列关键概念,包括网络漏洞、加密技术及安全意识。通过详细的案例分析和实践指南,旨在提高读者对网络威胁的认知,并介绍如何有效防范这些威胁。无论是企业还是个人用户,了解并实施这些策略都是确保数字安全的关键。 ##
16 2
|
11天前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
|
9天前
|
存储 供应链 安全
守护网络前线:漏洞、加密与安全意识的全方位解析
在这个数字时代,网络安全已成为我们不可忽视的重要议题。本文深入探讨了网络安全中的三大关键领域:安全漏洞、加密技术以及安全意识。通过具体案例和实用策略,旨在为读者提供一个全面而深入的视角,以更好地理解和应对网络安全挑战。
|
9天前
|
存储 安全 算法
网络安全与信息安全的全面解析
本文深入探讨了网络安全和信息安全的重要性,详细分析了常见的网络漏洞及其成因,并介绍了当前主流的加密技术。此外,文章还强调了提升安全意识的必要性,为读者提供了实用的建议和措施。
17 1
|
5天前
|
网络协议 安全 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基础知识,包括网络驱动、端口映射和命名等核心概念,并深入探讨了 Bridge、Host、Overlay 和 Macvlan 四种网络类型的特点及应用场景。此外,还提供了创建、连接、查看和删除自定义网络的命令示例,以及高级网络配置方法,如网络命名空间、DNS 解析和安全通信配置,帮助开发者构建更健壮的容器化应用。
|
6天前
|
Cloud Native 持续交付 Docker
深入解析Docker容器化技术及其在生产环境中的应用
深入解析Docker容器化技术及其在生产环境中的应用
10 0
|
2月前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
2月前
|
存储 NoSQL Redis
redis 6源码解析之 object
redis 6源码解析之 object
58 6
下一篇
无影云桌面