在OS X安装Docker
Last updated
Last updated
作为开发运维人员,很多人喜欢使用Mac OS X作为自己的工作平台,我也不例外 ^_^
本文是早期采用Docker Toolbox(也就是VirtualBox虚拟机来运行Docker)的方案,当前最新版本的Docker已经可以采用类似KVM的Hypervisor,即bhyve来运行,性能更佳。详细的最新版本Docker for macOS请参考Docker for Mac快速起步。
Docker虽然不支持在Linux之外的操作系统直接运行(因为其底层技术和Linux内核紧密结合),但是可以通过在其他操作系统,如Mac OS X、Windows等,借助其他虚拟机(如VirtualBox,VMware)内部运行的Linux来运行Docker。在Mac OS X上,Docker通过Docker Toolbox来方便部署Docker容器。
Docker Toolbox包括了以下Docker工具:
运行docker-machine
程序的Docker Machine - 这个工具是为了创建和连接到虚拟机
运行docker
程序的Docker Engine
运行docker-compose
程序的Docker Compose
Docker GUI程序Kitematic
支持Docker命令行环境的预配置shell
Oracle VM VirtualBox
在OS X中,docker
服务并不是直接运行在原生状态(例如Linux中是直接运行在物理主机Linux操作系统),而是运行在一个名为default
的Linux虚拟机。这个default
虚拟机是一个在Mac OS X中只运行Docker服务的轻量级Linux虚拟机。这个虚拟机完全运行在内存中,下载大小只有24MB,启动只需要5秒钟。
这个运行在OS X中的Docker主机地址就是Linux虚拟机的地址。当使用docker-machine
启动虚拟机,这个虚拟机被分配一个IP地址。当这个虚拟机中运行的容器启动时,这个容器的端口被影射到虚拟机的对外端口。这样,用户就能够通过访问虚拟机的对外端口访问到容器中的服务。
如果已经运行了VirtualBox,必须在运行Docker Toolbox安装前关闭这个Virtualbox
从Docker Toolbox网站下载安装包
启动Docker Toolbox安装
安装最后步骤是Quick Start
步骤,可以选择启动Docker的方式。这里选择Kitmatic
图形管理器
Kitematic是运行在Mac和Windows平台的Docker GUI,提供了方便管理和使用Docker的操作界面。
点击选择Kitematic
则开始下载和初始化最小化的docker-machine
虚拟机
选择登录,登录到Docker公共的软件仓库(或在线注册),登录以后就可以看到Kitematic
提供了很多流行的docker容器,直接可以安装,方便进行开发环境部署
这里点击
hello-world-nginx
安装一个案例容器
点击新创建的hello-world-nginx
容器的卷
可以看到这个卷就是本地目录~/Documents/Kitematic/hello-world-nginx/website_files
目录。所有在这个目录下添加的文件,都可以通过这个容器中运行的nginx访问。
查看容器端口映射
点击hello-world-nginx
容器的Settings
然后点击Ports
就可以看到Docker Toolbox已经映射好访问容器中nginx服务的IP地址和端口192.168.99.100:32769
此时打开浏览器,访问 http://192.168.99.100:32769 就可以看到初始页面
如上所述,Docker容器是运行在VirtualBox虚拟机中的,我们可以打开VirtualBox管理器来看看这个虚拟机的运行。
可以看到这是一个名为default
的Linux虚拟机。双击这个default
虚拟机,可以看到这个虚拟机的控制台界面,就可以如同普通的VirtualBox虚拟于行的Linux一样进行操作。
显示
这个容器我前面通过
Kitmatic
关闭了,现在使用命令行来启动它
这个命令将启动VirtualBox虚拟机,并准备好Docker环境
显示
按照提示,我们现在检查一下环境
显示
好了,我们现在执行命令来配置当前shell环境
此时,当前shell就已经连接到VirtualBox中的Docker环境,现在再执行docker
命令就是直接操作VirtualBox中的docker服务了。后面的操作和在Linux上运行docker
是一样的体验。
例如,我们现在在shell
中可以执行docker
命令,来控制容器了
在
Kitematic
的图形管理界面中,点击左下角的DOCKER CLI
按钮,也可以同样启动一个终端shell,并且这个shell会自动执行上述命令准备好环境,可以直接使用,更为方便。
查看当前已经下载的镜像,这些镜像就是我们可以快速创建容器的基础
显示输出
检查容器
首先检查是否有docker容器在运行
显示输出
表明当前还没有在运行的容器。
检查已经部署的容器
显示输出
这个容器就是我们前面使用Kitematic
安装的第一个测试容器,现在我们用命令行来启动这个容器
启动容器hello-world-nginx
检查容器hello-world-nginx
可以看到
注意,其中有一个PORTS
字段,显示了端口映射
现在我们又可以通过 http://192.168.99.100:32768 访问这个服务了。
注意:这个
192.168.99.100
IP地址是VirtualBox运行的虚拟机的HOST类型网络,也就是只在本地主机可以访问的地址,并不是对外服务的IP地址。这种环境适合做本地开发测试。
Kitematic
创建和运行新容器图形界面,操作非常直观,点击+ NEW
按钮,然后在搜索页面搜索需要的镜像就可以创建了,例如,我们要创建redis
容器,直接搜索到redis
(推荐)映像,点击CREATE
按钮就可以创建了。
到这里,应该有了一个运行着虚拟机并且可以通过shell链接。使用以下命令验证
显示
访问容器端口
在DOCKER_HOST
上启动一个NGINX容器
通常情况下docker run
命令会启动一个容器,运行它,然后退出。这里-d
参数使得容器在docker run
命令完成后始终运行在后台。-P
参数将容器的端口暴露给本地主机;这样就可以从Mac上访问容器。
显示容器
创建CentOS容器涉及到通过docker file来定制systemd服务,步骤略微复杂。