network namespace

关于容器的network namespace

问题背景

开发编写了处理IP泄露问题的脚本,由于记录的信息全部是以error和warning标识(其实都是info),导致客户查看日志时认为有很多容器异常重启了,被怀疑是脚本惹的祸。且日志中记录的都是netns,因此无法直接匹配到对应的容器信息,于是想到这个方法,每间隔一段时间运行一次,记录当前所有容器的name、netns、images信息

目的

证明运维无罪,找到消失的容器对应的镜像

  • 查询netns示例:
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash

for name in `docker container ls | awk {'print $NF'} | grep -v NAMES`
do

dockerpid=`docker inspect -f {{'.State.Pid'}} ${name}`
cd /proc/${dockerpid}/ns
inode=ll | grep 'net' | awk -F ":" {'print $3'} | awk -F "[" {'print $2'} | awk -F "]" {'print $1'}
ns_name=`ls -i /run/docker/netns/ | grep "${inode}"`
echo ${ns_name}

done

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!