我正在 MacOS BigSur (11.2.2) 上运行 Docker 社区版本,并尝试进入虚拟环境。
2018 年的这篇文章说到做到
$screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
2020 年 2 月的这篇文章说
$ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
但这些东西在我当前的安装中似乎都不起作用。
$docker --version Docker version 20.10.5, build 55c4c88
jor*_*ski 14
您找到的方法是backdoors进入虚拟机的方法,随着版本的变化,它们也会发生变化,并且最新的 Docker-for-mac 不再支持上述两种方法。
获得对虚拟机的终端访问的最规范的方法(sh在虚拟机中创建一个进程并tty从中获取),您需要以下命令。
docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
Run Code Online (Sandbox Code Playgroud)
这种方法将创建一个容器并将其加入到主机的命名空间中,之后它将通过执行命令在init( ) 的命名空间中创建一个新的 shell 。这在后续版本中不会有太大变化,因为它依赖稳定的 docker 功能来访问虚拟机。在我使用的示例中,但您可以将其替换为任何具有(例如,等)的图像pid 1nsenterdebiannsenteralpinebusybox
此外,您还可以通过当前的调试套接字进行访问,这将直接在虚拟机中创建一个 shell 并连接到它。这更多的是backdor为了调试而创建的,可能会在未来的版本中删除/更改。
stty -echo -icanon && nc -U ~/Library/Containers/com.docker.docker/Data/debug-shell.sock && stty sane
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3392 次 |
| 最近记录: |