关于 Docker 与宿主机的虚拟化

2017-03-21 22:58:32 +08:00
 studentht

DockerToolbox升级到Docker时,其网站给出功能特性之一就是

Windows

Docker CE for Windows uses Windows-native Hyper-V virtualization and networking and is the fastest and most reliable way to develop Docker apps on Windows.

OSX

Fast and reliable performance with native macOS virtualization running a custom minimal Linux distro.

我个人理解 windows 和 OSX 上新版( native ) Docker 都仍旧是跑在一个本地 Linux 虚拟机上。
1.那么 Docker 与宿主机使用的虚拟化技术有什么关系了?(为什么强调使用了原生虚拟化技术,是跑虚拟机时用了宿主机 OS 的虚拟化技术吗?)
2.可以理解为以前是 VirtualBox 跑个虚拟机,现在换成了 Hyper-V ( Osx 上也是有跑自己的虚拟机吗?)来跑虚拟机?
3.再就是再次确认一个问题,我们无论在哪个平台生成的 image ,都是可以在任意支持 Docker 的平台 docker run 吗(忽略区分大小写问题)?(因为有人跟我说不完全可以,依赖于打包的宿主机和 docker run 的宿主机差异;我觉得推翻了我对 docker 的理解,特来求问)

4069 次点击
所在节点    Docker
5 条回复
uxstone
2017-03-21 23:06:13 +08:00
docker 用到了 Linux 的一些特性,
Windows,OSX 上装 docker 只是开发测试用,生产啥的,还是在 linux
没啥好纠结的吧,
wwqgtxx
2017-03-22 00:51:17 +08:00
其实就是说本来用第三方虚拟机,现在用 win 和 osx 集成的虚拟机
至于最后运行,依然还是一个 linux x64 虚拟机,所以你的问题三,无论打包平台是什么最后都可以在任意支持的平台上运行
你的问题二在官方文档中提到了, mac 版使用了 macos 新提供的虚拟化 api ,到本质上还是跑了一个 linux 虚拟机
wwqgtxx
2017-03-22 00:54:04 +08:00
不过从实践来说, win 平台的 hyper-v 的最大缺点就是打开了之后, vmware/virtualbox/android 模拟器之类的程序就访问不了硬件虚拟化了,所以,因为各种原因个人还是直接关闭了 hv
ryd994
2017-03-22 03:25:34 +08:00
1. Docker 实际上还是 Linux only 的,其他系统上通过虚拟化跑 Linux 虚拟机间接支持
2.是
3.不一定。比如 gcc -march=native 编译出来的,当然跑不了。又或者 64 位程序在 32 位硬件上也不可能。毕竟 docker 只是个容器。不过如果是 linux 的话反而简单了,因为反正要套虚拟机,套完套都一样了。 32 位 CPU 我记得没有支持硬件虚拟化的。
studentht
2017-03-22 10:47:11 +08:00
@ryd994 32-bit 的问题应该不用考虑把, Docker 官方都不支持 32-bit 平台

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/349276

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX