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

简介: 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实现

测试:


相关文章
|
数据采集 机器学习/深度学习 人工智能
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
1318 0
|
10月前
|
安全 Linux 网络安全
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
262 0
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
|
11月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
679 18
|
11月前
|
网络协议 关系型数据库 Linux
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
在App Service for Linux环境中,无法像Windows一样直接使用网络排查工具抓包。本文介绍了如何通过TCPDUMP在Linux环境下抓取网络包,包括SSH进入容器、安装tcpdump、执行抓包命令及下载分析文件的完整操作步骤。
504 5
|
12月前
|
Web App开发 网络协议 Linux
【Linux】网络基础
TCP/IP五层模型是网络通信的基础框架,将复杂的数据传输过程分为物理层、数据链路层、网络层、传输层和应用层,每层各司其职,协同完成远程通信。该模型确保了不同设备和网络之间的互联互通,是现代互联网运行的核心机制。
1338 5
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
413 19
|
12月前
|
网络协议 Linux 开发者
深入Linux中UDP网络通信机制编程探索
以上步骤概述了Linux中UDP网络通信的编程机制。在实现时,因关注细节和上下文环境可能有所调整,但大致流程是一致的。这些知识片段旨在帮助开发者快速上手Linux下的UDP编程,并提供可靠的信息作为编程的基础。在编程实践中,应结合实际业务需求,设计合适的数据传输协议,确保数据的正确性和实时性。
247 0
|
Linux 数据安全/隐私保护
使用Linux命令行接入无线网络Wi-Fi的示例。
现在,你已经使用命令行成功地连接到 Wi-Fi 网络了。这两个示例涵盖了用 `nmcli` 和 `wpa_supplicant` 连接无线网络的常见场景,让你能够不依赖图形化界面来完成这个任务。在日常使用中熟练掌握这些基本操作能增强你对 Linux 系统的理解,帮助你更有效地处理各种问题。
1110 12
|
人工智能 运维 监控
阿里云携手神州灵云打造云内网络性能监测标杆 斩获中国信通院高质量数字化转型十大案例——金保信“云内网络可观测”方案树立云原生运维新范式
2025年,金保信社保卡有限公司联合阿里云与神州灵云申报的《云内网络性能可观测解决方案》入选高质量数字化转型典型案例。该方案基于阿里云飞天企业版,融合云原生引流技术和流量“染色”专利,解决云内运维难题,实现主动预警和精准观测,将故障排查时间从数小时缩短至15分钟,助力企业降本增效,形成可跨行业复制的数字化转型方法论。
782 6
|
Ubuntu Linux
Linux系统管理:服务器时间与网络时间同步技巧。
以上就是在Linux服务器上设置时间同步的方式。然而,要正确运用这些知识,需要理解其背后的工作原理:服务器根据网络中的其他机器的时间进行校对,逐步地精确自己的系统时间,就像一只犹豫不决的啮齿动物,通过观察其他啮齿动物的行为,逐渐确定自己的行为逻辑,既简单,又有趣。最后希望这个过程既能给你带来乐趣,也能提高你作为系统管理员的专业素养。
2374 20