Jif*_*ang 63 docker docker-machine docker-for-mac
Docker for Mac使用HyperKit创建的Linux VM 在Mac上存储和运行容器.
使用Docker Toolbox,我可以打开VirtualBox并访问docker-machine VM.但是使用Docker for Mac,我如何访问HyperKit创建的VM?
Jif*_*ang 120
更新2019-01-31,感谢ru10的更新,现在有更好的方法:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
Run Code Online (Sandbox Code Playgroud)
原答案:
过了一会儿,我找到了以下方法来获取由HyperKit创建的VM的shell:
从终端运行:
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
Run Code Online (Sandbox Code Playgroud)
您将看到一个空屏幕,然后输入enter, 你会得到一个登录提示.登录,你会得到壳:root并按Enter键,您将获得一个shell(无密码)
它有点hacky,但它似乎现在工作 (2016年9月) (2017年9月).
ru1*_*u10 39
Mac OS High Sierra Docker版本18.06.0-ce-mac70(26399)
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
Run Code Online (Sandbox Code Playgroud)
代替
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
Run Code Online (Sandbox Code Playgroud)
aug*_*rar 21
根据Docker 维护者的这个 GitHub 问题评论,访问 VM 的推荐方式是通过特权 docker 容器。
尝试登录虚拟机:(我建议这样做而不是在 TTY 上使用屏幕)
Run Code Online (Sandbox Code Playgroud)$ docker run -it --privileged --pid=host justincormack/nsenter1
这个问题有一个通用的答案,可以在《Kubernetes in Action》第二版书中找到:
\n\n\n在撰写本文时,如果您想从内部探索它,Docker Desktop 没有提供登录虚拟机的命令。但是,您可以运行配置为使用 VM\xe2\x80\x99s 命名空间的特殊容器来运行远程 shell,这实际上与使用 SSH 访问远程服务器相同。要运行容器,请执行以下命令:
\n
docker run --net=host --ipc=host --uts=host --pid=host --privileged \\\n --security-opt=seccomp=unconfined -it --rm -v /:/host alpine chroot /host\nRun Code Online (Sandbox Code Playgroud)\n\n\n这个长命令需要解释一下:
\n\n
\n- 该容器是从\xc2\xa0
\nalpine\xc2\xa0image 创建的。- \xc2\xa0
\n--net、\xc2\--ipcxa0 、--uts\xc2\xa0 \xc2--pid\xa0 和 \xc2\xa0 \xc2\xa0 标志使容器使用主机\xe2\x80\x99s 命名空间而不是沙箱,并且 \xc2\ xa0--privileged\xc2\xa0and\xc2\xa0--security-opt\xc2\xa0flags 使容器可以不受限制地访问所有系统调用。- \xc2\xa0
\n-it\xc2\xa0flag 运行容器交互模式,\xc2\xa0--rm\xc2\xa0flags 确保容器在终止时被删除。- \xc2\xa0
\n-v\xc2\xa0flag 将主机\xe2\x80\x99s 根目录挂载到/host容器中的\xc2\xa0 \xc2\xa0 目录。然后, \xc2\xa0chroot /host\xc2\xa0 命令使该目录成为容器中的根目录。
| 归档时间: |
|
| 查看次数: |
15925 次 |
| 最近记录: |