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

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

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

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

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

$ip netns add test

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

$ip netns show
test

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

$ ip netns exec test ifconfig

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

$ip netns del test

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

$ docker run -it ubuntu

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

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

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

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

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

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

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

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

$ ln -s proc/1234/ns/net /var/run/netns/

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

查看 Docker 容器的名字空间 .相关推荐

  1. linux查看docker使用率,查看docker容器的内存占用

    使用docker stats命令可以查看容器的内存,但是有时候docker stats命令获得的数据可能准确,可以参考下面这种方式 先通过docker ps -a 找到容器的container id ...

  2. docker 每次都得source /etc/profile以及如何查看Docker容器环境变量、向容器传递环境变量

    如何查看Docker容器环境变量,如何向容器传递环境变量 方式一: ENV SERVER_PORT 80 ENV APP_NAME pkslow 方式二: $ docker run -itd --na ...

  3. 查看docker容器日志

    1:实时查看docker容器id为 02c5ac132ee5 的最后10行日志 docker logs -f -t --tail 10 02c5ac132ee5 2:查看指定时间后的日志,只显示最后1 ...

  4. docker logs 查看docker容器日志详解

    docker logs 查看docker容器日志详解 通过docker logs命令可以查看容器的日志. 命令格式: $ docker logs [OPTIONS] CONTAINEROptions: ...

  5. 【云原生】查看 Docker 容器启动命令和相关参数

    安装Python3 Linux 一般都默认安装了 Python 2,而 Python2 就附带了 pip 命令,但 2 版本的 pip 经常在安装包的时候出错,所以建议安装 Python3.使用如下命 ...

  6. 查看docker 容器的ip地址

    docker 容器的ip地址往往和服务器是一个局域网 ip地址不是127.0.01 那么如何查看docker 的ip地址 执行命令: docker inspect ca_peerOrg1(容器名称) ...

  7. docker logs 查看docker容器日志

    命令格式 $ docker logs [OPTIONS] CONTAINEROptions:--details 显示更多的信息-f, --follow 跟踪实时日志--since string 显示自 ...

  8. docker 查看容器名_如何查看Docker容器环境变量,如何向容器传递环境变量

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! 了解Docker容器的运行环境非常重要,我们把应用放在容器里执行,环境变量会直接影响程序的执行效果.所以我们要知道容器内部的 ...

  9. 日志查看 docker容器启动失败原因

    1.查看异常容器id docker ps -a -- id:e85e4839fcde 2.查看日志所在路径: docker inspect --format '{{.LogPath}}' e85e48 ...

最新文章

  1. SAP成都研究院郑晓霞:Shift Left Testing和软件质量保证的一些思考
  2. @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  3. codeforces 872 D. Something with XOR Queries(思维)
  4. jquery单选框radio绑定click事件实现和是否选中的方法
  5. Java知识整理——基础知识
  6. Physical Standby Database (11g)-ADG
  7. python3 全局变量 局部变量_Python3获取变量名并修改函数内部的外部变量和局部变量,python3,在,local...
  8. 基于情感词典的情感值分析
  9. 南昌二中高考2021成绩查询,南昌二中2019高考成绩喜报、一本二本上线人数情况...
  10. mysql修改数据sql语句_sql语句修改数据
  11. MTK ELT工具,驻网
  12. sqlplus 命令导入数据文件
  13. 维宏控制卡win7 驱动_维宏控制系统驱动
  14. 浅析View的事件分发机制
  15. java概述及我的第一个java项目
  16. Inverting Generative Adversarial Renderer for Face Reconstruction
  17. EDI的含义及其重要性
  18. 【webGoat】Path traversal
  19. 2021年一次比较奇葩的 AWS 面试
  20. 金仓数据库KingbaseES SYS_BULKLOAD工具的使用

热门文章

  1. 华为设备ACL配置命令
  2. 教育大数据,想说爱你不容易
  3. 【pytorch】yolov4 实现对蛾子数据集的识别 以及 对蛾子图片二值化处理 实现 自动打标签标注。(本文重点在自动实现将图片转化为voc数据集)
  4. DC基础学习(二)Synthesis Flow1
  5. mysql 设置 sql_mode
  6. WebRTC IOS视频硬编码流程及其中传递的CVPixelBufferRef
  7. VMware vMotion简介
  8. matlab里的图像处理函数
  9. python列表查找值_查找列表中某个值的位置(python)
  10. python拆分字符串生成列表_关于python:如何将字符串拆分为列表?