在Mac/Win上使用Docker

Docker是基于Linux的应用容器,那么是不是在Mac/Win上就不能使用Docker呢,答案是否定的,毕竟大量开发者的工作环境是Mac/Win,总跑到服务器上玩也不是办法。

本文介绍了在Mac/Win上使用Docker的方法及一些注意事项。


必须用虚拟机!

是的,没有魔法,Docker确实是基于Linux的(确切的说是基于kernel),那么在Mac/Win上使用就必须得借助虚拟机了。

好在Docker在设计之初就由于考虑到集群而使用了C/S架构。这让我们用虚拟机来使用Docker的体验和在Linux上的体验是差不多的。

Docker架构 -wide

Docker Toolbox

早些时候,要么自己搞定虚拟机,安装Docker,配置网络。要么使用Boot2Docker,它包括1个轻量级的运行Docker的Linux发行版,和一个方便管理虚拟机的工具。

docker_toolbox -wide 官方推出的Docker Toolbox为Mac/Win用户提供了开箱即用的Docker环境,它包括以下内容:

  1. Docker CLI:Docker控制端
  2. Docker Machine:基于Boot2Docker,管理Docker虚拟机
  3. Docker Compose:用于方便的定义和控制多容器的Docker应用
  4. Kitematic:GUI的控制端,还在beta阶段
  5. Docker QuickStart:一个开箱即用的脚本
  6. Oracle VM VirtualBox

QuickStart

安装好Docker Toolbox后,点击Docker QuickStart,就可以直接开始使用Docker了,真正的开箱即用,它为你做了以下事情:

  1. 如果不存在一个用Docker Machine创建的名为default的虚拟机,则创建一个
  2. 如果虚拟机default没有启动,则启动它
  3. 为Docker传令设置虚拟机defualt需要的环境变量

好了,运行docker run hello-world,如果出现以下输出,一切都OK了。 snapshot -wide 开始愉快的玩耍吧!

基本命令

  • docker pull image_tag 将image拉到本地
  • docker run --name container_name image_tag 运行image,并为其容器命名
  • docker run -d --name container_name image_tag 后台运行
  • docker stop/start/restart/rm container_name 停止/运行/重启/删除容器
  • docker rmi image_tag 删除image

更多请查看官方Docker命令行文档

  • docker-machine create -d virtualbox default 创建名为default的Docker虚拟机
  • docker-machine env default 显示docker命令连接到default所需的环境变量,并提示你该如何操作(这在不同的操作系统,不同的shell上是不一样的,比如在Mac下是eval $(docker-machine env default)
  • docker-machine stop/start/restart/rm default 关机/开机/重启/删除虚拟机default
  • docker-machine ssh default ssh连接到虚拟机default

更多请查看官方Docker Machine命令文档

Volume

Volume是Docker的核心技术之一,它可以把Host上的目录/文件挂载到容器中。

在Mac/Win上,由于Docker实际是运行在虚拟机上的,那么你的Volume都是在虚拟机上的,这样在开发中是很不方便的。

考虑到这点,Docker Machine默认在创建虚拟机时共享了主机的/Users(Mac上)或C:\Users(Win上)目录。所以,如果你想把Volume挂载到你的本机上,在Mac上:

docker run -v /Users/<path>:/<container path> ...

在Win上:

docker run -v /c/Users/<path>:/<container path> ...

Docker for Mac and Windows Beta

两个月前(2016年3月),Docker为Mac/Win推出了新的Beta版软件:「Docker for Mac and Windows Beta: the simplest way to use Docker on your laptop」。

这在未来是要取代Docker Toolbox的,但目前还在测试阶段,有兴趣可以自行了解一下。

结束

Docker是一项很热门有前景的技术,值得所有开发者都接触一下。既然官方提供了这么易用的Docker Toolbox,那么还等什么呢。

--全文完--