使用 Moby 构建 Docker for Mac 17.06 社区版
出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五晚6点10分 与您不见不散
说在前面
Docker For Mac 17.06 社区版是第一个完全建立在 Moby 项目上的 Docker 版本。Moby 是 Docker 公司推出的一个开放框架,用于建立专门的容器系统。它包含 3 个基本元素:容器化的后端组件库(例如,底层构建器,日志记录设施、卷管理、网络、镜像管理、容器化、SwarmKit);将组件组装成独立容器平台的框架,以及用于构建、测试和部署这些组件的工件的工具,以及称为 Moby Origin 的参考组件,这是 Docker 容器平台的开放式基础,以及使用来自 Moby 库或其他项目的各种组件组成的容器系统示例。
Docker for Mac 是 Docker 社区版 (CE) 的一个应用,目的是让开发人员在 OSX 上体验现有的工作流。Docker for Mac 安装包包含了在Mac 上运行Docker 所需的一切程序。下面是一些特别引人关注的功能:
-
只需拖放即可完成安装,并自动更新以获取最新的 Docker;
-
安全、沙盒化的虚拟化架构,没有提升的特权;
-
原生网络支持,具有 v*n 和网络共享兼容性;
容器和主机之间的文件共享,UID 映射、inotify 事件等;
Docker for Mac 的核心构建块包括:
-
虚拟化;
网络;
文件系统;
一些值得注意的组件包括:
-
HyperKit,此工具包用于在应用中嵌入hypervisor 功能;
-
DataKit,此工具用于编排使用9P 数据流的应用;
v*nKit,一组工具和服务,帮助HyperKit 虚拟机与主机v*n 配置互操作;
如果您想了解有关这些组件的详细信息,请阅读相关的文档指南(https://docs.docker.com/docker-for-mac/)。
LinuxKit 目前支持多个云平台,例如 AWS、谷歌云平台、 Microsoft Azure、VMware 等。在本地 hypervisor 方面,它支持 HyperKit、VMware、KVM 和 Microsoft Hyper-V。
如果您密切关注 LinuxKit 存储库,会发现引入了一个名为 blueprint 的新目录,其中将包含 LinuxKit 所支持的平台上作为基础系统的 blueprint。这些囊括了Docker 各版本做覆盖的所有平台,以及Docker 社区所支持的所有平台。所有的初始测试工作将在examples/ 目录下进行,然后推送到 blueprints 目录,如图所示:
目前,在 blueprint/ 目录下包含 Docker For Mac 17.06 CE 的基本文件:
-
base.yml => 其中包含 Docker for Mac 的开源组件;
docker-17.06.ce.yml => 构建虚拟机镜像做必需的YAML 文件;
该 blueprint 支持通过 vsudd 控制从主机访问容器,以及通过 v*nKit 进行端口转发。它需要在主机上运行 HyperKit、v*nKit 和一个 Docker 客户端。
文件: docker-17.06-ce.yml
通过以下 YAML 代码启用 v*nKIT:
文件: base.yml
使用 Moby 工具和 Docker 17.06 进行构建:
$ moby build -name docker4mac base.yml docker-17.06-ce.yml
这将在 docker4mac-state 目录下生成一些文件,如下图所示:
接下来,我们现在可以运行LinuxKit 命令来运行带有1024M磁盘的虚拟机:
$ linuxkit run hyperkit -networking=v*nkit -vsock-ports=2376 -disk size=1024M docker4mac
现在,您应该能够看到虚拟机docker4mac 顺利启动:
您可以打开一个新的终端来查看整体的目录/文件树结构:
让我们尝试使用 ctr list 命令列出服务容器。应该显示 Docker For Mac 17.06 服务容器,如下所示:
您可以使用 $ ctr exec -t docker-dfm sh 命令轻松地进入服务容器:
点击下列标题,阅读更多干货
如果本文对你有帮助,欢迎分享到朋友圈!获取更多Docker实用技巧,扫描下图二维码!