在OS X上的Docker

在当今虚拟化的世界里,Docker是这个区域上的新生儿。在运行Linux时,设置和使用它几乎是微不足道的。如果像许多极客一样,你使用OS X作为你的主要开发系统呢?这里讨论两种可能的解决方案,使用boot2docker或通过Linux虚拟机运行。

让我们来一个简单的基于Golang的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上正确安装),我们可以构建容器:

sudo docker build -t hellogo .

最后的点(".")。指的是当前的目录(即Git检出),而构建的映像将被称为hellogo。请注意,如果CentOS 6尚未在本地可用,这将为CentOS 6提供基础映像。

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

sudo docker build -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 builddocker 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 insatll docker.io“ 
结束

它基于最近的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提供商进一步简化了工作流程,请与我们分享。

包容一切事物!

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏实战docker

docker私有仓库搭建与使用实战

hub.docker.com上可以保存镜像,但是网速相对较慢,在内部环境中搭建一个私有的公共仓库是个更好的方案,今天我们就来实战搭建私有docker仓库吧; 环...

4886
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Docker和Docker Compose配置持续集成测试环境

持续集成(CI)指的是开发人员尽可能频繁地集成代码,并且在自动化构建将每个提交合并到共享存储库之前和之后都要进行测试的实践。

400
来自专栏性能与架构

Docker容器如何共享数据

image.png 容器与外部的数据共享是通过数据卷实现的 数据卷概念 是容器与外部在文件系统上的通道,可以和主机的文件系统建立联系,也可以和其他容器建立文件级...

2725
来自专栏云计算教程系列

如何在Ubuntu 16.04上使用Docker和Docker Compose配置持续集成测试环境

持续集成(CI)是指开发人员尽可能经常集成代码并在每个提交在通过自动构建合并到共享存储库之前和之后进行测试的实践。

270
来自专栏云计算

在OS X上运行Docker

在当今虚拟化的世界里,Docker是这个领域中的新生儿。在使用Linux系统时,配置和使用Docker几乎是轻而易举的。但是,如果你像许多极客一样使用OS X...

1906
来自专栏Janti

每天学一点Docker(3)(制作你的第一个容器)

今天开始制作第一个容器,其实很简单 首先你要准备这些条件: 1.一个Ubuntu系统 2.这个系统能够联网,最起码ping www.baidu.com是可以的 ...

3567
来自专栏java思维导图

Docker完全指南,入门必读好文!

https://wdxtub.com/2017/05/01/docker-guide/

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

Docker EE 安装 on centos7

有两种方法可以 在Centos上安装和升级Docker企业版(Docker EE):

1242
来自专栏运维一切

怎么用daocloud玩转自己的项目 原

##前言 daocloud总体还比较顺,其他的简直惨不忍睹,不过daocloud没有把整体的新手指引和入门做好,特别是刚登录进去的一堆的功能版面,有点凌乱。这些...

844
来自专栏jessetalks

Gitlab CI 自动部署 asp.net core web api 到Docker容器

为什么要写这个? 在一个系统长大的过程中会经历不断重构升级来满足商业的需求,而一个严谨的商业系统需要高效、稳定、可扩展,有时候还不得不考虑成本的问题。我希望能找...

4226

扫码关注云+社区