Linux网络故障排查与深度进入网络通信手记
Linux网络故障排查与深度进入网络通信手记
情况分类:
- 连不上网(无法访问国内网站也无法访问国外网站);访问不了docker的网站
- 能访问国内网站,访问不了国外网站;docker拉不下镜像->docker镜像源失效
能访问国内网站,访问不了国外网站;docker拉不下镜像
eth0存在
报错信息
1 | └─# docker-compose up -d |
注解:
docker-compose up -d
docker-compose
docker-compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过在docker-compose.yml文件中定义服务(包括镜像、网络、卷等),可以方便地启动和管理多个容器。up
up 命令会根据 docker-compose.yml 文件中的配置启动所有定义的服务。如果容器或服务已经存在,Docker Compose 会检查它们的状态,并在必要时重新启动它们。
具体操作包括:创建网络:如果还没有定义的网络,它将自动创建。
创建卷:定义的卷(存储)也会被自动创建并挂载到相应的容器。
构建镜像:如果服务定义了镜像,Docker Compose 会检查镜像是否存在,如果不存在,会自动拉取或构建镜像。
启动服务:最后,所有服务会被启动。
-d
-d 代表 “detached mode”(后台运行模式)。这意味着容器将在后台运行,你的终端会立即返回,而不是保持打开以显示容器日志。 detach:分开
如果不加 -d 参数,docker-compose up 会以前台模式启动,容器的日志输出会显示在当前终端中,直到手动停止。
Pulling web (vulhub/teamcity:2023.05.3)
Docker Compose 尝试拉取名为
vulhub/teamcity:2023.05.3的镜像,用于启动web服务。镜像来源于
vulhub的 Docker Hub 仓库,标签版本为2023.05.3
ERROR: Get "https://registry-1.docker.io/v2/": dial tcp 168.143.162.42:443: i/o timeout
dial tcp 168.143.162.42:443
Docker 尝试通过 TCP 协议与目标 IP 地址 168.143.162.42 的端口 443 建立连接。端口 443 是 HTTPS 使用的标准端口。
这个 IP 地址是 Docker Hub 的服务器之一,Docker 客户端通过该地址访问 Docker Hub 来拉取镜像。i/o timeout
这是一个网络超时错误,表示 Docker 在尝试与 Docker Hub 建立网络连接时等待的时间过长,导致连接失败。
i/o timeout 意味着 Docker 发送了一个请求,但未能在预期时间内收到响应,因此中止了操作。
测试排障
1 | └─# docker pull vulhub/teamcity:2023.05.3 |
排除docker-compose的问题,具体到网络问题
1 | └─# nslookup registry-1.docker.io |
DNS服务有效
1 | └─# curl https://registry-1.docker.io/v2/ |
连接服务器失败
curl命令来自英文词组CommandLine URL的缩写,其功能是在Shell终端界面中基于URL规则进行文件传输工作。 curl是一款综合性的传输工具,可以上传也可以下载,支持HTTP、HTTPS、FTP等30余种常见协议。
1 | ping ip服务器 |
ping:是用来探测本机与网络中另一主机之间是否可达的命令,如果两台主机之间 ping 不通,则表明这两台主机不能建立起连接。
ping 命令是基于 ICMP 协议来工作的,
ICMP 全称为 Internet 控制报文协议( Internet Control Message Protocol)。
ping 命令会发送一份 ICMP 回显请求报文给目标主机,并等待目标主机返回 ICMP回显应答。因为 ICMP 协议会要求目标主机在收到消息之后,必须返回 ICMP 应答消息给源主机,如果源主机在一定时间内收到了目标主机的应答,则表明两台主机之间网络是可达的。
猜测:
- 被墙了(但是采用的是和以前相同的环境)
被Q
- 采用国内镜像源(但是国内镜像源已配置,可能未生效)
- 借用主机的梯子
- 虚拟机再建梯子
发现原因,解决方法
docker镜像源失效。/(ㄒoㄒ)/~~
添加了新的镜像源就解决了,三条命令
1 | vim /etc/docker/daemon.json |