了解不同的Docker组件

我有非常简单的理论问题。 在Docker for Windows和Mac OS正式启动之前,我们在VirtualBox中使用了Docker。 在Virtual Box中,我们得到一个虚拟机,我们使用docker-machine命令来pipe理它,而如果我们使用Docker for Windows和Mac OS,我们通常不使用docker-machine 。 现在保持在两个版本的视图:

  1. 什么是Docker主机和它在两个版本中的作用?
  2. 如果我们使用Docker for Windows,Docker Client现在被称为Windows上的任何terminal? (我们现在不需要将terminalconfiguration为Docker Client来pipe理我们的容器吗?)
  3. Docker引擎和Docker守护进程在两个版本中是相同还是不同的东西?
  4. MobyLinux VM在Hyper-V中的作用是什么?
  5. Docker如何将我们的应用程序与主机操作系统隔离开来?

任何帮助将不胜感激。

docker主机是你的容器运行的地方。 由于Docker容器需要在Linux下运行,如果你在Mac或Windows上,只能在你的机器上本地运行它们,如果你有一个Linux虚拟机运行。

  1. 在VirtualBox上,docker主机是boot2docker的一个实例,它是一个非常轻量级的linux。 在docker4mac上,主机实际上就是你的mac(每个容器实际上都是在一个名为xhyve的“micro linux”下运行的,但是这是为了详细说明)

  2. Docker客户端就是任何运行Docker Client应用程序的terminal,Docker Client应用程序是一个与在主机内运行的Docker Daemon进行通信的CLI应用程序。

  3. 据我所知,即使在Docker 4 mac / windows中,Docker引擎和docker守护程序也是一样的。

  4. 我不知道关于MobyLinux

  5. 从主机(和其他容器)的容器隔离是通过命名空间,cgroup和专用networking实现的。 见https://docs.docker.com/engine/security/security/然而,我不相信像cgroup这样的安全性是默认启用的。

所有好问题

关于Docker守护进程,Docker引擎,Docker客户端,Docker主机以及Docker如何工作,请参阅了解Docker文档和Docker引擎页面 。 有清晰的架构结构和解释。

对于问题4,Docker应该在Linux中运行,所以Docker for Windows将创build一个Linux“MobyLinux”虚拟机来运行Docker组件。