Linux.中国 - 开源社区

 找回密码
 骑士注册

QQ登录

微博登录


使用Docker、CoreOS、Mesos部署可扩展的Web应用

为我的Web应用程序创建Docker镜像

这里是我用来构建Docker镜像的Dockerfile:

FROM golang
WORKDIR /
RUN git clone https://djannot:xxxx@github.com/djannot/s3pics.git
WORKDIR /s3pics
RUN go build
EXPOSE 8080

构建镜像时我使用了--no-cache参数,以确保最新的源代码是从GitHub上克隆的。

core@coreos1 /media/share1/Dockerfiles/s3pics $ docker build --no-cache .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM golang
---> 1ea210e0e1f6
Step 1 : WORKDIR /
---> Running in f6987b175723
---> 022aa96f56d0
Removing intermediate container f6987b175723
Step 2 : RUN git clone https://djannot:xxxx@github.com/djannot/s3pics.git
---> Running in 54d6a32e90ba
Cloning into 's3pics'...
---> 3369bca87577
Removing intermediate container 54d6a32e90ba
Step 3 : WORKDIR /s3pics
---> Running in d875bc08eac9
---> 73946142ea54
Removing intermediate container d875bc08eac9
Step 4 : RUN go build
---> Running in e0bd59c1f28b
---> baebdd1b633e
Removing intermediate container e0bd59c1f28b
Step 5 : EXPOSE 8080
---> Running in 16d3fa9be1c5
---> 815b7aed2c83
Removing intermediate container 16d3fa9be1c5
Successfully built 815b7aed2c83

最后,我推送镜像到Docker registry。

core@coreos1 /media/share1/Dockerfiles/s3pics $ docker push 10.64.231.45:5000/s3pics:2.0
The push refers to a repository [10.64.231.45:5000/s3pics] (len: 1)
Sending image list
Pushing repository 10.64.231.45:5000/s3pics (1 tags)
Image 511136ea3c5a already pushed, skipping
Image 16386e29a1f4 already pushed, skipping
Image 835c4d274060 already pushed, skipping
Image 22c23ce0a90c already pushed, skipping
Image 3f1e6432f26e already pushed, skipping
Image 7982826b1e59 already pushed, skipping
Image 1dafbd563f5a already pushed, skipping
Image 7a94d87545e8 already pushed, skipping
Image e2d60f7b3d07 already pushed, skipping
Image 4f23222e2f74 already pushed, skipping
Image 258b590ccdee already pushed, skipping
Image 986643313a7b already pushed, skipping
Image 1ea210e0e1f6 already pushed, skipping
022aa96f56d0: Image successfully pushed
3369bca87577: Image successfully pushed
73946142ea54: Image successfully pushed
baebdd1b633e: Image successfully pushed
815b7aed2c83: Image successfully pushed
Pushing tag for rev [815b7aed2c83] on {http://10.64.231.45:5000/v1/repositories/s3pics/tags/2.0}

我已经指定了一个tag(2.0),以确保集群中的每个节点都会从Docker Registry获取最新版本。

部署Mesos应用程序

现在,让我们使用Docker镜像部署一个Mesos应用:

POST http://<Mesos Marathon IP>:8080/v2/apps

{
"id": "s3pics",
"cmd": "cd /s3pics; ./s3pics -AccessKey=denis@ad.forest -SecretKey=xxxx -EndPoint=http://denisnamespace.ns.viprds.ad.forest -Namespace=denisnamespace",
"cpus": 0.1,
"mem": 64.0,
"instances": 1,
"container": {
"type": "DOCKER",
"docker": {
  "image": "10.64.231.45:5000/s3pics:2.0",
  "network": "BRIDGE",
  "portMappings": [
  { "containerPort": 8080, "hostPort": 0, "protocol": "tcp" }
  ]
}
},
"healthChecks": [
{
"protocol": "HTTP",
"portIndex": 0,
"path": "/",
"gracePeriodSeconds": 10,
"intervalSeconds": 20,
"maxConsecutiveFailures": 3
}
]
}

当Mesos应用程序启动后,Mesos Marathon UI就会显示应用程序的状态。

2.png

几秒钟之后,应用部署成功,Docker主机和端口显示在UI中。

3.png

查看其它分页:

发表评论


最新评论

我也要发表评论

猛山小强 2015-1-30 08:03  新浪微博网友评论
//@ruochen_SH: //@Jason阿堅: //@BikongV://@highbird03: //@alaleiwang:docker over mesos,看起来很cool//@DockerOne: 我们翻译的[嘻嘻]//@王关胜
回复
小_虎子 2015-1-30 08:03  新浪微博网友评论
@我的印象笔记 //@ruochen_SH: //@Jason阿堅: //@BikongV://@highbird03: //@alaleiwang:docker over mesos,看起来很cool//@DockerOne: 我们翻译的[嘻嘻]//@王关胜
回复
ruochen_SH 2015-1-29 22:03  新浪微博网友评论
//@Jason阿堅: //@BikongV://@highbird03: //@alaleiwang:docker over mesos,看起来很cool//@DockerOne: 我们翻译的[嘻嘻]//@王关胜
回复
简单爱踢人 2015-1-29 08:33  新浪微博网友评论
@我的印象笔记
回复
鹄思乱想 2015-1-29 07:33  新浪微博网友评论
@我的印象笔记 //@JinWYP://@Jason阿堅: //@BikongV://@highbird03: //@alaleiwang:docker over mesos,看起来很cool//@DockerOne: 我们翻译的[嘻嘻]//@王关胜
回复
dahoo1 2015-1-29 01:03  新浪微博网友评论
//@Linux中国://@青松梁://@马全一:Mark 了去试试//@cwinux:代码部署把Mesos换成ducter吧,用那么重的Mesos做这事有点大材小用了。我们的各种web、c、java的系统,都统一使用ducter统一部署,管理几万台服务器那是没任何压力。对于docker容器的部署与管理也没有任何问题。//@王关胜: //@马全一
回复
Jason阿堅 2015-1-29 00:03  新浪微博网友评论
//@BikongV://@highbird03: //@alaleiwang:docker over mesos,看起来很cool//@DockerOne: 我们翻译的[嘻嘻]//@王关胜
回复
zyx-today 2015-1-28 22:33  新浪微博网友评论
好吧,看到我名字了
回复
yocloud 2015-1-28 21:03  新浪微博网友评论
回复@cwinux:谢谢推荐,看看//@cwinux:代码部署把Mesos换成ducter吧,用那么重的Mesos做这事有点大材小用了。我们的各种web、c、java的系统,都统一使用ducter统一部署,管理几万台服务器那是没任何压力。对于docker容器的部署与管理也没有任何问题。//@王关胜: //@马全一
回复
yocloud 2015-1-28 21:03  新浪微博网友评论
回复@cwinux:谢谢推荐,看看
回复
alaleiwang 2015-1-28 19:33  新浪微博网友评论
docker over mesos,看起来很cool//@DockerOne: 我们翻译的[嘻嘻]//@王关胜
回复
水天一线 2015-1-28 19:03  新浪微博网友评论
Repost
回复
i陈飞 2015-1-28 18:33  新浪微博网友评论
//@大侠谭玺:转发微博
回复
曦曦儿Sarah 2015-1-28 18:03  新浪微博网友评论
//@Linux中国://@青松梁://@马全一:Mark 了去试试//@cwinux:代码部署把Mesos换成ducter吧,用那么重的Mesos做这事有点大材小用了。我们的各种web、c、java的系统,都统一使用ducter统一部署,管理几万台服务器那是没任何压力。对于docker容器的部署与管理也没有任何问题。//@王关胜: //@马全一
回复
顾进广 2015-1-28 17:33  新浪微博网友评论
//@Linux中国://@青松梁://@马全一:Mark 了去试试//@cwinux:代码部署把Mesos换成ducter吧,用那么重的Mesos做这事有点大材小用了。我们的各种web、c、java的系统,都统一使用ducter统一部署,管理几万台服务器那是没任何压力。对于docker容器的部署与管理也没有任何问题。//@王关胜: //@马全一
回复
房檐落雨 2015-1-28 17:03  新浪微博网友评论
m//@Linux中国://@青松梁://@马全一:Mark 了去试试//@cwinux:代码部署把Mesos换成ducter吧,用那么重的Mesos做这事有点大材小用了。我们的各种web、c、java的系统,都统一使用ducter统一部署,管理几万台服务器那是没任何压力。对于docker容器的部署与管理也没有任何问题。//@王关胜: //@马全一
回复
Pirate_lin 2015-1-28 16:33  新浪微博网友评论
@Pro小明-肥 //@Linux中国: //@青松梁://@马全一:Mark 了去试试//@cwinux:代码部署把Mesos换成ducter吧,用那么重的Mesos做这事有点大材小用了。我们的各种web、c、java的系统,都统一使用ducter统一部署,管理几万台服务器那是没任何压力。对于docker容器的部署与管理也没有任何问题。//
回复
小C3210 2015-1-28 16:33  新浪微博网友评论
@我的印象笔记 //@DockerOne:我们翻译的[嘻嘻]//@王关胜
回复
DreamingSheep 2015-1-28 16:33  新浪微博网友评论
@mark
回复
cwinux 2015-1-28 16:03  新浪微博网友评论
资源隔离有docker,Mesos再做隔离不是重复了吗,因此说大财小用。//@Dongxu_Huang: mesos 最大的价值是资源的抽象和隔离,ducter有这个 功能吗?对进程精确到 cpu 核数的资源调度,不好意思文档没找到 //@马全一: Mark 了去试试//@cwinux:代码部署把Mesos换成ducter吧,用那么重的Mesos做这事有点大
回复
12下一页
返回顶部

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”将网页分享至朋友圈。