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

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 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实现

测试:


相关文章
|
11天前
|
域名解析 存储 网络协议
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
本文详细介绍了IP协议报头结构及其各字段的功能,包括版本、首部长度、服务类型、总长度、标识、片偏移、标志、生存时间(TTL)、协议、首部检验和等内容。此外,还探讨了IP地址的网段划分、特殊IP地址的应用场景,以及路由选择的大致流程。最后,文章简要介绍了DNS协议的作用及其发展历史,解释了域名解析系统的工作原理。
48 5
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
|
7天前
|
物联网 5G SDN
5G 网络架构全解析:RAN、核心网和接入网
5G 网络架构全解析:RAN、核心网和接入网
39 8
|
3天前
|
存储 安全 算法
网络安全的盾牌与利剑:漏洞防范与加密技术解析
【9月更文挑战第31天】在数字时代的浪潮中,网络安全成为守护个人隐私和组织资产的重要屏障。本文将深入探讨网络安全中的两大关键要素:安全漏洞和加密技术。我们将从漏洞的类型、检测方法到如何有效修补,逐一剖析;同时,对加密技术的基本原理、应用实例进行详细解读。文章旨在为读者提供一套实用的网络安全知识框架,帮助提升网络防护意识和技能,确保在日益复杂的网络环境中保护好每一份数据。
17 3
|
4天前
|
SQL 监控 安全
网络安全与信息安全的全面解析##
本文深入探讨了网络安全和信息安全的重要性,揭示了一系列关键概念,包括网络漏洞、加密技术及安全意识。通过详细的案例分析和实践指南,旨在提高读者对网络威胁的认知,并介绍如何有效防范这些威胁。无论是企业还是个人用户,了解并实施这些策略都是确保数字安全的关键。 ##
16 2
|
10天前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
|
9天前
|
存储 供应链 安全
守护网络前线:漏洞、加密与安全意识的全方位解析
在这个数字时代,网络安全已成为我们不可忽视的重要议题。本文深入探讨了网络安全中的三大关键领域:安全漏洞、加密技术以及安全意识。通过具体案例和实用策略,旨在为读者提供一个全面而深入的视角,以更好地理解和应对网络安全挑战。
|
8天前
|
存储 安全 算法
网络安全与信息安全的全面解析
本文深入探讨了网络安全和信息安全的重要性,详细分析了常见的网络漏洞及其成因,并介绍了当前主流的加密技术。此外,文章还强调了提升安全意识的必要性,为读者提供了实用的建议和措施。
16 1
|
9天前
|
Linux Docker 容器
linux之docker命令
linux之docker命令
|
10天前
|
缓存 算法 网络协议
一文详细理解计算机网络 - 数据链路层(考试和面试必备)
这篇文章详细介绍了计算机网络中数据链路层的概念、基本问题、点对点信道和广播信道的数据链路协议(如PPP和CSMA/CD),以及局域网和以太网的相关知识。
24 0
一文详细理解计算机网络 - 数据链路层(考试和面试必备)
|
10天前
|
存储 网络协议 网络性能优化
一文详细理解计算机网络体系结构(考试和面试必备)
这篇文章提供了C++基础知识的快速概述,包括C++的特点、面向对象设计、组成部分、标准、学习建议、应用领域、源文件、编译器、类与对象、编译执行步骤、分号与块、标识符、基本数据类型、typedef、枚举类型、变量定义与声明等。
19 0
一文详细理解计算机网络体系结构(考试和面试必备)
下一篇
无影云桌面