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实现

测试:


相关文章
|
3月前
|
机器学习/深度学习 人工智能 运维
运维告警别乱飞了!AI智能报警案例解析
运维告警别乱飞了!AI智能报警案例解析
468 0
|
4月前
|
存储 运维 数据可视化
运维过程记录工具深度解析:从原理到实操,一文掌握核心功能与应用场景
运维过程记录是保障系统稳定的关键,缺失记录会导致问题难定位、重复发生及协作低效。通过自动化工具实现操作实时记录、集中管理与可回溯分析,可大幅提升故障排查、安全审计与团队协作效率。未来,记录工具将更智能,助力运维向高效、可控、可预测方向演进。
|
4月前
|
存储 运维 安全
运维知识沉淀工具深度解析:从结构设计到落地实践全拆解
运维知识沉淀工具助力团队将零散经验结构化存储,实现问题处理路径标准化、知识复用化。通过标签、模板与自动化调取机制,让每次处理都留下可复用资产,提升团队协同效率与系统稳定性。
|
5月前
|
SQL JSON 运维
运维事项备忘工具深度解析:让日常维护更安全、突发响应更高效
运维工作琐碎且易遗漏,需借助备忘工具将其结构化、流程化。通过分类管理、提醒追踪与团队协作,实现发布检查、周期任务、应急响应等事项的有序管理,提升系统稳定性。适合3人以上运维团队及有标准化流程的企业使用。工具推荐板栗看板、OpsWay等,助力打造可持续运维节奏。
|
2月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
6月前
|
Docker 容器
Docker网关冲突导致容器启动网络异常解决方案
当执行`docker-compose up`命令时,服务器网络可能因Docker创建新网桥导致IP段冲突而中断。原因是Docker默认的docker0网卡(172.17.0.1/16)与宿主机网络地址段重叠,引发路由异常。解决方法为修改docker0地址段,通过配置`/etc/docker/daemon.json`调整为非冲突段(如192.168.200.1/24),并重启服务。同时,在`docker-compose.yml`中指定网络模式为`bridge`,最后通过检查docker0地址、网络接口列表及测试容器启动验证修复效果。
1102 39
|
4月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
6月前
|
存储 安全 数据建模
Docker数据卷深入解析与操作技巧
通过巧妙使用Docker数据卷,我们就能实现数据的灵活管理和无缝迁移,享受容器化的便捷,同时确保数据的安全与高效共享。
141 6
|
7月前
|
人工智能 运维 监控
HarmonyOS NEXT~鸿蒙系统运维:全面解析与最佳实践
本书《HarmonyOS NEXT~鸿蒙系统运维:全面解析与最佳实践》深入探讨了鸿蒙系统的运维管理。从架构特点到实际操作,涵盖分布式能力、性能优化、安全维护及故障排查。内容包括设备管理、系统监控、安全管理等核心任务,提供常见问题解决方案与工具推荐。面对未来超级终端和AI赋能的挑战,运维人员需不断学习,以充分发挥鸿蒙的分布式优势,为用户带来流畅体验。
605 8
|
7月前
|
网络协议 安全 Devops
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
274 4

热门文章

最新文章