前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在OS X上运行Docker

在OS X上运行Docker

作者头像
Techeek
发布2018-01-04 09:28:41
1.8K0
发布2018-01-04 09:28:41
举报
文章被收录于专栏:云计算
鲸

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

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

代码语言:javascript
复制
git clone https://bitbucket.org/ariya/docker-hellogo.git 
cd docker-hellogo

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

代码语言:javascript
复制
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),我们可以直接构建容器:

代码语言:javascript
复制
sudo docker build -t hellogo .

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

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

代码语言:javascript
复制
sudo docker run -p 8200:8200 -t hellogo

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

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

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

代码语言:javascript
复制
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文件,内容如下:

代码语言:javascript
复制
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端口。运行如下命令初始化此虚拟机:

代码语言:javascript
复制
vagrant up

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

代码语言:javascript
复制
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提供者进一步简化了操作流程,请通知我们。

将万物都放进容器!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档