docker 使用:直接进入容器的网络空间

Tags: docker 

目录

container-namespaces-deep-dive-container-networking/中做了详细的介绍。

用 nsenter 进入容器的 network

nsenter 进入指定进程的的 network namespace:

pid = "$(docker inspect -f '{ {.State.Pid} }' "container_name | Uuid")"
nsenter -t $pid -n /bin/sh

创建 netns

ip netns会到 /var/run/netns 目录下寻找 network namespace,把容器进程中 netns 连接到这个目录中后,ip netns才会感知到。

$ sudo mkdir -p /var/run/netns
$ sudo ln -sf /proc/$pid/ns/net "/var/run/netns/container_name or uuid"

docker 默认不会创建这个链接,需要手动创建。

这时候执行ip netns,就应当看到链接过来的 network namespace,例如链接的名字为 pause:

$ip netns
pause (id: 1)

在容器的netns中执行命令

 sudo ip netns exec "container name | uuid" ip a

参考

  1. container-namespaces-deep-dive-container-networking/
  2. nsenter

推荐阅读

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: [email protected],备注网站合作

友情链接:  系统软件  程序语言  运营经验  水库文集  网络课程  微信网文  发现知识星球