如何查看 Docker 新版本中容器的名字空间

云计算
熟悉 Linux 技术的人都知道,容器只是利用名字空间进行隔离的进程而已,Docker 在容器实现上也是利用了 Linux 自身的技术。如果你使用的是比较新的 Docker 版本,会尴尬的发现,直接使用系统命令,会无法访问到容器名字空间。这里,首先介绍下“ ip netns” 系列命令。这些命令负责操作系统中的网络名字空间。

熟悉 Linux 技术的人都知道,容器只是利用名字空间进行隔离的进程而已,Docker 在容器实现上也是利用了 Linux 自身的技术。

有时候,我们需要在宿主机上对容器内进行一些操作,当然,这种绕过 Docker 的操作方式并不推荐。

如果你使用的是比较新的 Docker 版本,会尴尬的发现,直接使用系统命令,会无法访问到容器名字空间。

这里,首先介绍下“ ip netns” 系列命令。这些命令负责操作系统中的网络名字空间。

首先,我们使用 “add” 命令创建一个临时的网络名字空间。

  1. ip netns add test 

然后,使用 show 命令来查看系统中的网络名字空间,会看到刚创建的 test 名字空间。

  1. ip netns show 
  2. test 

另外,一个很有用的命令是 exec,会在对应名字空间内执行命令。例如

  1. ip netns exec test ifconfig 

使用 del 命令删除刚创建的 test 名字空间。

  1. ip netns del test 

接下来运行一个 Docker 容器,例如

  1. docker run -it ubuntu 

再次执行 ip netns show命令。很遗憾,这里什么输出都没有。

原因在于,Docker 启动容器后仍然会以进程号创建新的名字空间,但在较新的版本里面,默认删除了系统中的名字空间信息文件。

网络名字空间文件位于 /var/run/netns 下面,比如我们之前创建的 test 名字空间,则在这个目录下有一个 test 文件。诸如 netns 类似的系统命令依靠这些文件才能获得名字空间的信息。

在容器启动后,查看这个目录,会发现什么都没有。

OK,那让我们手动重建它。

首先,使用下面的命令查看容器进程信息,比如这里的1234。

  1. docker inspect --format='{{. State.Pid}} ' container_id 
  2. 1234 

接下来,在 /proc 目录(保存进程的所有相关信息)下,把对应的网络名字空间文件链接到 /var/run/netns 下面

  1. ln -s /proc/1234/ns/net /var/run/netns/ 

然后,就可以通过正常的系统命令来查看或访问容器的名字空间了。例如

  1. ip netns show 
  2. 1234 
  3. ip netns exec 1234 ifconfig eth0 172.16.0.10/16... 

原文出自:http://blog.csdn.net/yeasy/article/details/41694797

责任编辑:Ophira 来源: yeasy的专栏
相关推荐

2011-08-01 15:35:51

GlassFishJava 7

2009-06-17 09:24:34

学习strutsStruts新版本

2010-02-23 17:44:48

Python 3.0

2022-04-15 11:51:48

Windows 11安全加密

2020-08-14 13:50:13

UbuntuHandbrakeLinux

2015-02-05 16:59:36

平安WiFiiOS

2020-02-25 20:50:38

UbuntuLinuxGit

2015-10-13 16:02:49

升级Windows 10微软

2022-05-12 13:40:18

勒索软件数据泄露网络安全

2020-07-10 06:40:31

Python 3.9Python开发

2012-05-15 13:39:41

微软Windows8

2009-12-31 11:09:36

Ubuntu wine

2009-12-29 13:43:21

Ubuntu 9.10

2023-05-18 08:00:59

CephRGW 性能

2012-09-24 11:50:04

IBMdw

2023-10-13 12:32:54

2023-05-05 06:19:30

版本Windows 11企业版

2014-04-17 11:24:44

GoogleAndroid

2009-08-02 08:59:47

Windows 7 R系统升级

2014-12-08 10:33:34

Java
点赞
收藏

51CTO技术栈公众号