【问题标题】:How to connect host machine from container using nsenter utility如何使用 nsenter 实用程序从容器连接主机
【发布时间】:2021-12-21 21:31:48
【问题描述】:

ubuntu 中有一个名为 nsenter 的实用程序。 nsenter 是一个允许进入命名空间的小工具。它将进入您的 docker 容器。我想从 docker 容器控制主机。如何使用 nsenter 实用程序从容器连接主机?

【问题讨论】:

  • 嗨@Ashok Kumar,Fritz Duchardt 的回答能回答你的问题吗?如果是,请考虑accepting it

标签: docker ubuntu kubernetes ubuntu-18.04 nsenter


【解决方案1】:

nsenter 允许您加入目标进程 ID (PID) 的 Linux 命名空间。

首先,运行一个与 --pid=host 共享主机 PID 命名空间的容器。容器必须具有--privileged 的特权,否则执行nsenter 将失败并出现“不允许操作”错误。通过执行tail -f /dev/null,容器可以无限期地运行。

docker run --pid=host --privileged --name admin-container ubuntu:latest tail -f /dev/null

然后执行nsenter进入容器,进入宿主机第一个init进程(PID = 1)的文件系统、ipc、utc和网络命名空间:

docker exec -it admin-container nsenter --target 1 --mount --uts --ipc --net /bin/bash

环顾四周,您会发现,您在主机上。

【讨论】:

  • ("如果你禁用 Docker 的安全控制,那么你可以逃逸容器。")
  • 我猜使用 nsenter 的全部目的是为了逃避容器(出于管理目的),对吧?
  • @FritzDuchardt 谢谢你的回答。你能解释一下上面命令中的“tail -f /dev/null”是什么意思吗?
  • @AshokKumar 确定 - 我在我的回答中添加了一个简短的解释:这是为了保持容器运行。
猜你喜欢
  • 2021-12-28
  • 1970-01-01
  • 2017-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多