Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在OS X上运行Docker

在OS X上运行Docker

作者头像
Techeek
发布于 2018-01-04 01:28:41
发布于 2018-01-04 01:28:41
2K00
代码可运行
举报
文章被收录于专栏:云计算云计算
运行总次数:0
代码可运行

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://bitbucket.org/ariya/docker-hellogo.git 
cd docker-hellogo

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
sudo docker build -t hellogo .

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
vagrant up

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

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

将万物都放进容器!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在 OS X 上使用 Docker
本文介绍了如何在 OS X 上使用 Docker,包括使用 boot2docker 和使用 Linux 虚拟机两种方法。首先介绍了在 CentOS 6.5 上的安装过程,然后讲解了如何使用 Dockerfile 构建一个简单的 Go 语言服务器,并通过 docker build 和 docker run 命令在本地构建和运行镜像。最后介绍了在 OS X 上使用 Docker 的两种方法:使用 boot2docker 和使用 Linux 虚拟机。
Weston Wu
2018/01/05
3.4K0
vagrant学习笔记 - 基本命令的使用
box多版本共存的情况 如果box升级过,那么在box list中会出现两个同名,但版本不同的镜像。如:
pollyduan
2019/11/04
1.3K0
​在 OS X 系统上快速上手 Docker 技术 (对 Docker 还不够熟悉? 从这里开始吧!)
本文介绍了 Docker 技术的基本概念、架构、使用场景以及基于 Docker 的开发实践。通过本文,读者可以了解到 Docker 技术的基本原理,以及如何在各种环境中使用 Docker 进行开发。
Techeek
2018/01/02
1.8K0
​在 OS X 系统上快速上手 Docker 技术 (对 Docker 还不够熟悉? 从这里开始吧!)
在OS X上的Docker
在OS X上使用Docker进行开发,可以通过两种方式来实现:使用boot2docker或创建一个Linux虚拟机。使用boot2docker可以快速启动Docker,但需要使用Vagrant进行配置。创建一个Linux虚拟机可以更好地与本地开发环境兼容,但需要手动安装和配置Docker。无论哪种方式,都需要注意端口映射和安全性问题。
Techeek
2018/01/03
1.5K0
在OS X上的Docker
Ansible实战之博客站点部署
糖豆贴心提醒,本文阅读时间4分钟 本篇文章记录通过部署一个博客站点来进行ansible实战的例子。 案例分为四个部分,第一部分是手动部署一个mezzanine站点;第二部分是通过ansible来部署mezzanine;第三部分是使用角色来重写第二部分的代码;第四部分则是ansible与Docker一起使用的效果。(注: mezzanine是一个基于django的CMS系统,有点类似wordpress,官网地址在这里 ,不过我们的重点是ansible来部署它,而不是去深究它自身的运行机制)。 1 手动搭
小小科
2018/05/02
1.5K0
Ansible实战之博客站点部署
Vagrant实战
平时工作一直在Linux上做开发,Docker用的比较多,最近要用Vagrant搭建Linux开发环境,所以用了一下,整理一些资料。
kongxx
2019/12/20
9360
Docker学习总结之Docker与Vagrant之间的特点比较
Docker学习总结之Docker与Vagrant之间的特点比较   以下内容均出自Vagrant作者(Mitchell Hashimoto)与Docker作者(Solomon Hykes)在stackoverflow上面一个问题讨论。在这个问题中,双方阐述了vagrant和docker的特点和使用范围,对于深入理解vagrant和docker很有意义,因此笔者翻译出来,以供大家讨论学习。   Mitchell作为vagrant的作者,其在DevOps的世界里面沉浸多年,接触了很多类似docker的虚拟化软
随机来个数
2018/04/16
9940
windows下VirtualBox vagrant的安装配置
vagrant 是一款用来构建虚拟开发环境的工具,我们可以通过vagrant封装一个liunx开发环境,分发给团队中的其它人员,这样大家的开发环境都一样啦,而且现在的网站都是运行在liunx上,这样可以保持和线上的环境一样,避免了网站上线后在测试机没问题,线上有问题的想象。
PHP学习网
2022/08/03
6720
windows下VirtualBox vagrant的安装配置
Docker学习总结之Docker与Vagrant之间的特点比较
不分场景而直接比对vagrant和docker是不恰当的!在一些简单场景中,它们两款产品作用是重复的,但在更多场景中,它们两款产品无法相互替 代。事实上,vagrant抽象度比docker更高,因此直接用vagrant同docker相比较是不恰当的。而把vagrant同 Boot2Docker(一款运行docker最小的内核) 进行比较似乎更加恰当。    vagrant为了支持开发,在启动虚拟机环境时启动了很多的应用和服务。vagrant可以在VirtualBox, VMware上面运行(docker无法
小小科
2018/05/02
6310
02. SpringCloud实战项目-快速搭建Linux环境-运维必备
Windows启动配置:Intel Virtualization Technology -> Enabled
悟空聊架构
2020/04/13
8720
Vagrant快速入门教程
之前学习Docker的时候,发现了Vagrant,感觉这也是一个挺方便的技术,但是我下载安装完Vagrant的时候,发现恰好VirtualBox发了新版本,Vagrant还没兼容,所以这篇文章一直拖到了现在。昨天正好Vagrant更新了版本,修复了这个问题,所以不说了,我们直接开始吧。
乐百川
2020/02/18
1.3K0
Vagrant快速入门教程
新手学Linux(三)----使用 Vagrant 打造跨平台开发环境(二)
在上一篇《新手学Linux(二)—-使用 Vagrant 打造跨平台开发环境(一)》文章中,给大家介绍了什么是vagrant?,vagrant能干什么,以及vagrant的主要使用者,那么今天就给大家讲讲vagrant的具体使用!
令仔很忙
2018/09/14
8200
Vagrant详细教程
  VirtualBox 是一个跨平台的虚拟化工具,支持多个操作系统,根据自己的情况选择对应的版本下载即可。
Se7eN_HOU
2022/05/07
9750
Vagrant详细教程
vagrant搭建centos环境前言环境准备安装修改配置文件启动与连接常用vagrant命令清空重新导入镜像配置文件 Vagrantfile填坑记录
macos作为开发环境已经相当方便,有很丰富的工具,如homebrew类似于ubuntu的apt-get和centos的yum,很方便地安装各种开发工具。但终究与线上生产环境不同,即便安装的是相同的软件,安装目录,管理方式都有所不同。当项目很复杂,或者有多个项目时,很容易将mac本地环境弄得乱七八糟。
章鱼喵
2018/12/28
1.2K0
Dockerize Your Hexo
使用 Docker 打包 Hexo 写作环境。 前言 在上篇文章中,我简单提到了在升级 Hexo 3 过程中遇到的一些痛苦。其实还有很多问题没有在上篇文章中提及。比如,我的渲染器使用的是 pandoc ,在 2.x 的时候,hexo-tag-plugins 里头的文字可以通过调用 renderSync 方法传给 markdown 进行渲染,而到了 3.0 ,这些文字无论怎么做都不能被 pandoc 或者 markdown 渲染。 早在我决定挥刀动斧定制我的个人博客之前,我早已经做好了发生这种情况的心理准备。
HaHack
2018/07/03
7060
VirtualBox + Vagrant 安装 CentOS7 虚拟机
https://www.virtualbox.org/wiki/Downloads
程序员飞飞
2020/04/08
2.3K0
docker常见问题总结[docker中文手册]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说docker常见问题总结[docker中文手册],希望能够帮助大家进步!!!
Java架构师必看
2022/01/15
6000
Vagrant入门
简单地说,Vagrant让我们可以通过代码的方式快速地、可重复地创建针对不同虚拟环境的虚拟机,包括Virtualbox、AWS、Docker等。它使得我们可以一次性地、自动创建多个环境相同的虚拟机,对于软件开发和测试尤其有用。本文我们将以Virtualbox为例,看看Vagrant的基本使用。
全栈程序员站长
2021/11/10
4650
Mac上下载安装Vagrant、配置打包属于自己的开发环境(使用Homestead后续也会更新出来)
目前解决这种问题最佳的方法有Docker(生产环境line)、Vagrant(用于开发环境dev)。
友儿
2022/09/11
1.7K0
Vagrant搭建Linux环境
1、下载软件 https://www.virtualbox.org/wiki/Downloads https://www.vagrantup.com/downloads.html http://www.vagrantbox.es/ 下载一个镜像 2、安装virtualbox、vagrant 3、查看vagrant是否安装 vagrant -v 4、安装 vagrant box add ubuntu14.04 ubuntu14.04.box vagrant init vagrant box
苦咖啡
2018/04/28
1.9K0
推荐阅读
相关推荐
在 OS X 上使用 Docker
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验