当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 的理解,特来求问)
1
uxstone 2017-03-21 23:06:13 +08:00
docker 用到了 Linux 的一些特性,
Windows,OSX 上装 docker 只是开发测试用,生产啥的,还是在 linux 没啥好纠结的吧, |
2
wwqgtxx 2017-03-22 00:51:17 +08:00 via iPhone
其实就是说本来用第三方虚拟机,现在用 win 和 osx 集成的虚拟机
至于最后运行,依然还是一个 linux x64 虚拟机,所以你的问题三,无论打包平台是什么最后都可以在任意支持的平台上运行 你的问题二在官方文档中提到了, mac 版使用了 macos 新提供的虚拟化 api ,到本质上还是跑了一个 linux 虚拟机 |
3
wwqgtxx 2017-03-22 00:54:04 +08:00 via iPhone
不过从实践来说, win 平台的 hyper-v 的最大缺点就是打开了之后, vmware/virtualbox/android 模拟器之类的程序就访问不了硬件虚拟化了,所以,因为各种原因个人还是直接关闭了 hv
|
4
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 我记得没有支持硬件虚拟化的。 |