$ docker version
Client version: 1.0.0 Client API version: 1.12 Go version (client): go1.2.1 Git commit (client): 63fe64c Server version: 1.0.0 Server API version: 1.12 Go version (server): go1.2.1 Git commit (server): 63fe64c从Docker Hub拉取一个ubuntu image
$ docker pull libmesos/ubuntu配置Mesos:
$ curl -fL ~ubuntu14.04%2B1_amd64.deb -o /tmp/mesos.deb $ dpkg -i /tmp/mesos.deb $ mkdir -p /etc/mesos-master $ echo in_memory | sudo dd of=/etc/mesos-master/registry ## Mesos Python egg for use in authoring frameworks $ curl -fL -o /tmp/mesos.egg $ easy_install /tmp/mesos.egg下载Marathon:
$ tar xvzf marathon-0.6.0.tgzMesos通过Deimos 管理Docker,通过pip安装Deimos:
$ pip install deimos配置mesos 使用Deimos
$ mkdir -p /etc/mesos-slave $ echo /usr/local/bin/deimos | sudo dd of=/etc/mesos-slave/containerizer_path $ echo external | sudo dd of=/etc/mesos-slave/isolation启动所有服务 :
$ initctl reload-configuration
$ service docker start
$ service zookeeper start
$ service mesos-master start
$ service mesos-slave start
##### Starting Marathon #####
$ cd marathon-0.6.0
$ ./bin/start --master zk://localhost:2181/mesos --zk_hosts localhost:2181
Marathon 在端口8080已经启动侦听,我们可以通过浏览器访问:
curl localhost:8080/help # gives us some details about the API's
启动容器我们通过Marathon启动一个容器的REST API提交如下:
curl -X POST -H "Accept: application/json" -H "Content-Type: application/json" \
localhost:8080/v2/apps -d '{
"container": {"image": "docker:///libmesos/ubuntu", "options": ["--privileged"]},
"cpus": 0.5,
"cmd": "sleep 500",
"id": "docker-tester",
"instances": 1,
"mem": 300
}'
我们通过在curl命令后选项"options"提交定制的Docker,我们能检查syslog ,因为mesos缺省日志是放在syslog中。
Jun 27 07:24:58 vagrant-ubuntu-trusty-64 deimos[19227]: deimos.containerizer.docker.launch() exit 0 // docker run --sig-proxy --rm --cidfile /tmp/deimos/mesos/00d459fb-22ca-4af7-9a97-ef8a510905f2/cid -w /tmp/mesos-sandbox -v /tmp/deimos/mesos/00d459fb-22ca-4af7-9a97-ef8a510905f2/fs:/tmp/mesos-sandbox --privileged -p 31498:31498 -c 512 -m 300m -e PORT=31498 -e PORT0=31498 -e PORTS=31498 libmesos/ubuntu sh -c 'sleep 500'
我们也能通过Marathon Rest API检查我们启动任务的状态:
curl -X GET -H "Content-Type: application/json" localhost:8080/v2/apps
下面是Marathon UI获得信息的截图:
更多关于Docker任务的信息可以通过Mesos GUI在Mesos主服务器的端口5050 ,现在我们测试一下任务的伸缩性,比如我们需要加入更多节点服务器,有两种办法,使用GUI或通过发出put请求。
curl -X PUT -H "Content-Type: application/json" localhost:8080/v2/apps/docker-tester \
"container": {"image": "docker:///libmesos/ubuntu", "options": ["--privileged"]},
"cpus": 0.5,
"cmd": "sleep 500",
"id": "docker-tester",
"instances": 2, # increasing the instance count to 2
"mem": 300
}'
Marathon能确保所有docker进程启动运行,如果某个进程崩溃,Marathon会重新启动同样的进程,以确保每个配置运行一个实例,还有其他开源Mesos调度器如Apache Aurora, Airbnb's Chronos. 但是marathon比较直接简单提供好的REST API用来管理容器,虽然Mesos, Marathon 和Docker还很年轻,但是提供了基于Docker的杀手级集群管理组合。
Docker安装应用(CentOS 6.5_x64)