Docker for Mac 初体验

Docker 作为一个集成的、易于部署的环境,在很多方面都有广泛的应用,但是由于其使用了 Linux 内核的容器技术,所以很依赖 Linux 环境,在其他系统环境下必须要使用虚拟机启动一个 Linux 系统然后在此基础上使用 Docker,非常不方便。而前不久 Docker 推出了 Mac 和 Windows 的全新 beta 版本,允许 Docker 以更贴近用户、透明的方式运行。笔者也下载了 beta 版本尝鲜,最新版本是 1.11.1-beta10,这里只讲解 Mac 平台。

Docker for Mac vs Docker Toolbox

Docker for Mac 本质上还是创建了一个 Linux 虚拟机,然后在上面运行 Docker Daemon,Mac 本身存在 Docker 二进制文件作为客户端,但是设计上相比之前的 Docker Toolbox 就更加巧妙了。

Docker Toolbox

Docker 工具箱会将 dockerdocker-composedocker-machine 安装到 /usr/local/bin 目录下,同时安装 VirtualBox。工具箱通过 docker-machine 虚拟化一个 Linux 环境,这个环境运行 boot2docker 系统,其中包含了一个 Docker Engine 并且使用主机 $HOME/.docker/machine/machines/default 上存放的证书通信。
在使用 dockerdocker-compose 命令之前,必须要使用 eval $(docker-machine env default) 命令初始化各类环境变量用于告知 docker 命令如何与虚拟机内的 Docker Daemon 通信

Docker for Mac

Docker for Mac 是一个原生的苹果应用程序,被安装到 /Application 目录。安装时会创建 /usr/local/bin 目录下的 dockerdocker-composedocker-machine 符号链接,这些符号链接指向 ~/Library/Group Containers/group.com.docker/bin 目录下的各类文件,而 ~/Library/Group Containers/group.com.docker/bin 的文件实际上也是符号链接,他们指向 /Applications/Docker.app/Contents/Resources/bin 目录下的实际二进制文件。

  • Docker for Mac 使用通过 Hypervisor.framework 提供的轻量级的 xhyve 虚拟化技术

  • Docker for Mac 不使用 docker-machine 管理虚拟机

  • Docker for Mac 不通过 TCP 端口通信,反而使用 /var/tmp/docker.sock 套接字文件通信(实际上是将 /var/tmp 目录挂载到了虚拟机中,虚拟机在其中生成套接字文件)

  • 由于使用了 xhyve 虚拟机,所以可以模拟不同架构的处理器,这样开发者就直接能在 Mac 上使用 Docker 使用诸多平台的镜像文件,比如 arm 等。

为了能主机虚拟机共享文件,Docker 使用 osxfs 作为全新的文件共享方案,在很多方面都有全新的特性,比如在文件权限、命名空间、文件所有者、文件系统事件、挂载点、符号链接、文件类型、扩展属性等方面都有了全新的内容,并且,所有产生的日志都能通过 syslog 查询,非常方便。不过现在依旧存在许多问题,比如没有设置 docker daemon 各项参数的接口。如果需要设置 registry-mirror 则必须手动使用 pinata set daemon 命令设置 daemon.json 内容。


静雅斋
码代码|Minecraft|Node.jser&PHPer|iOS移动端开发者|Web前端码农
2.4k 声望
158 粉丝
0 条评论
推荐阅读
数据库随笔
在移动端亦或是后端开发中,很多时候,我们会感觉到无论是 ORM 还是其他方案,都会存在着一些缺点,其实这来源于数据库本身和开发语言本身的冲突,现代化的语言基本上都是面向对象开发,面向对象是从软件工程基本...

山河永寂阅读 1.5k

张晋涛:我的 2022 总结
大家好,我是张晋涛。2022 年已经结束,我每年都会惯例的做个小回顾,今年因为阳了在恢复身体,一直拖到了今天才写。生活在 2022 年初做回顾的时候,觉得 2021 是魔幻的一年,但现在看来 2022 年其实更加魔幻。一...

张晋涛6阅读 654评论 2

封面图
Docker学习:Image的本地存储结构
在使用Docker时候,针对镜像的操作一般就是docker pull,docker build,docker commit(刚开始接触Docker的时候,还不会Dockerfile,经常使用这个命令,但是经历了一次血的教训,已经放弃这个命令很久)这些操作...

backbp4阅读 9.7k评论 3

使用docker快速搭建xssPlatform测试平台实践
笔者之前给一些开发团队多次做Web安全开发培训,为了让培训的学员能够理解XSS原理和XSS的危害,将xssPlatform进行了更新,之前一直放在GitHub中;发现关注的人越来越多,很多人在安装的过程中遇到问题不知道怎么...

汤青松1阅读 25.7k

利用Docker部署管理LDAP及其初次使用
前言:本周主要写了gitlabWebhook转github的项目,总体上没有遇到什么大问题,这周接触到了LDAP,于是就花时间实际操作了解了一下。

李明5阅读 841

工具篇:iTerm与Zsh
iTerm2支持许多的主题配色,可以自己定义,也可以参考网上现成的主题配色。我个人比较喜欢draculatheme配色。支持item,vim,phpstorm , 下方存在主题官网路径,按照教程安装即可。

super白4阅读 4.7k

BI系统打包Docker镜像及部署的技术难度和实现
随着容器化技术盛行,Docker在前端领域也有着越来越广泛的应用;传统的前端部署方式需要我们将项目打包生成一系列的静态文件,然后上传到服务器,配置nginx文件;如果我们使用容器化部署,将部署操作都命令化,集...

葡萄城技术团队2阅读 8.3k

2.4k 声望
158 粉丝
宣传栏