在OS X上运行Docker

在当今虚拟化的世界里,Docker是这个领域中的新生儿。在使用Linux系统时,配置和使用Docker几乎是轻而易举的。但是,如果你像许多极客一样使用OS X作为你的主要开发系统呢?这里讨论两种可能的解决方案,使用boot2docker或通过Linux虚拟机来运行Docker。

让我们来准备一个简单的基于Go的HTTP服务器,并在一个容器中运行它。我已经在bitbucket.org/ariya/docker-hellogo准备了一个演示,你可以跟着操作。请从下面开始:

git clone https://bitbucket.org/ariya/docker-hellogo.git 
cd docker-hellogo

这个仓库中的Dockerfile内容如下(已简化):

FROM centos:centos6 
ADD . /src 
RUN yum -y install golang 
EXPOSE 8200 
CMD ["go", "run", "/src/serve.go"]

它将CentOS 6设为基础映像,接着安装Golang,最后映射端口8200(HTTP服务器将监听的端口)。最后CMD一行指定在容器启动时要执行的操作,即运行该HTTP服务器。

假设已经安装了Docker(可以参考教程在Ubuntu上安装Docker),我们可以直接构建容器:

sudo docker build -t hellogo .

命令最后的点符号代表的是当前目录(即运行git checkout的目录),而构建的镜像将被称作hellogo。请注意,如果本地Docker仓库不存在CentOS 6的基础镜像,这条命令将会下载该镜像。

构建过程完成后,运行映像的命令如下所示:

sudo docker run -p 8200:8200 -t hellogo

参数-p 8200:8200指定端口转发。打开你的浏览器并访问http://localhost:8200,你应该会看到著名的Hello world! 消息。

对于那些使用OS X的人来说,幸运的是至少有两种可能的方式来实现上述步骤,而不需要手动创建Linux VM(虚拟机)后在其中运行上面的命令。

第一个选择是使用boot2docker,一个超轻量级的Linux发行版来运行Docker。一旦boot2docker已经安装完成,你需要这样配置(注意,我们需要第二行命令以确保能够正确的进行端口转发):

boot2docker init
vboxmanage modifyvm boot2docker-vm --natpf1 "http,tcp,127.0.0.1,8200,,8200"
boot2docker up
export DOCKER_HOST=tcp://localhost:4243

就这样!现在你可以像上面说的一样运行docker build以及docker run命令了(请去掉sudo)。挺简单的,不是吗?

第二个选择是让虚拟机运行Linux然后在其中使用Docker。这确实增加了一些额外的步骤和性能开销,但在很多情况下,这个方法仍然工作得很好。很显然,手动创建虚拟机不是你通常会做的事情。我们可以利用VagrantVirtualBox

为了说明这一点,在Git仓库中有这样一个Vagrantfile文件,内容如下:

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.network "forwarded_port", guest: 8200, host: 8200
  config.vm.provision "shell",
    inline: "apt-get -y update && apt-get -y install docker.io"
end

它基于当前最新(原文发布时)的Ubuntu 14.04Trusty)。配置脚本非常简单,它的任务就是安装Docker。需要注意也要转发8200端口。运行如下命令初始化此虚拟机:

vagrant up

等待一两分钟后虚拟机就应该准备好了。您可以通过运行VirtualBox Manager来验证这一点。如果没有任何问题,我们可以连接到该虚拟机:

vagrant ssh

在此SSH会话中,你可以像上面说的一样运行docker builddocker run。由于端口8200被正确转发,您还可以使用在OS X(主机系统)上运行的Safari访问http://localhost:8200。

从这个配置过程中,您可以见证虚拟化的力量。您的OS X机器在基于VirtualBox的虚拟机中运行Ubuntu 14.04系统。现在,在这个Ubuntu系统中,还有一个CentOS 6.5系统在容器中运行。而简单的基于Go的HTTP服务器正在该容器中执行。这很有意思,不是吗?

最后但同样重要的一点,新版的Vagrant 1.6版本作为一个提供者正式支持了Docker。我还没有尝试过,但是如果你发现这个官方的Docker提供者进一步简化了操作流程,请通知我们。

将万物都放进容器!

本文的版权归 Senra 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

在 OS X 上使用 Docker

在虚拟化技术盛行的当下,Docker 是其中的一支新兴力量。在使用 Linux 系统时,安装和使用 Docker 是十分容易的。但如果你和许多极客一样使用 OS...

2818
来自专栏编码前线

docker底层原理介绍

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

1543
来自专栏眯眯眼猫头鹰的小树杈

猫头鹰的深夜翻译:持久化容器存储

临时性存储是容器的一个很大的买点。“根据一个镜像启动容器,随意变更,然后停止变更重启一个容器。你看,一个全新的文件系统又诞生了。”

1295
来自专栏沈唁志

Windows10系统电脑怎么查看虚拟化技术是否开启?

在Windows下使用Swoole,是需要在虚拟机下进行测试的,所以我们使用VirtualBox和vagrant搭建Swoole的开发环境

5113
来自专栏企鹅号快讯

十分钟带你理解Kubernetes核心概念

本文将会简单介绍Kubernetes的核心概念。因为这些定义可以在Kubernetes的文档中找到,所以文章也会避免用大段的枯燥的文字介绍。相反,我们会使用一些...

2306
来自专栏哎_小羊

初试 minikube 本地部署运行 kubernetes 实例

目录 kubernetes 介绍 环境、软件准备 kubectl 安装 minikube 安装 部署运行实例 1、kubernetes 介绍 Kuberne...

7405
来自专栏云原生架构实践

Docker Data Center系列(一)- 快速搭建云原生架构的实践环境

DDC是Docker Data Center的简称,是Docker公司推出的容器化数据中心管理平台。它的编排核心是swarm,包含2个主要组件UCP和DTR。

1476
来自专栏云计算

在OS X上的Docker

在当今虚拟化的世界里,Docker是这个区域上的新生儿。在运行Linux时,设置和使用它几乎是微不足道的。如果像许多极客一样,你使用OS X作为你的主要开发系统...

2138
来自专栏CRPER折腾记

Docker折腾记: (1)构建yapi容器,从构建发布到可用

Docker/Linux/Node基础, 比如Linux和docker的常用命令,shell的编写等等

2282
来自专栏友弟技术工作室

macOS 安装 Docker

前几天,docker入门是在aws的ubuntu机器上演示的,下面介绍如何在macOS安装Docker。 ? 系统要求 Docker for Mac 要求系统最...

50711

扫码关注云+社区