千家信息网

怎么从marathon中使用docker启动nginx

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章主要介绍"怎么从marathon中使用docker启动nginx",在日常操作中,相信很多人在怎么从marathon中使用docker启动nginx问题上存在疑惑,小编查阅了各式资料,整理出简
千家信息网最后更新 2025年02月04日怎么从marathon中使用docker启动nginx

这篇文章主要介绍"怎么从marathon中使用docker启动nginx",在日常操作中,相信很多人在怎么从marathon中使用docker启动nginx问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么从marathon中使用docker启动nginx"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

如果程序一直deploy说明一定有问题
mac安装

brew install mesosbrew upgrade mesos

启动zookeeper 启动master

HOST_IP=100.80.128.98sudo /usr/local/Cellar/mesos/1.4.1/sbin/mesos-master --ip=${HOST_IP} \ --log_dir=/Users/lifei/dockerproject/mesos/master/log --work_dir=/Users/lifei/dockerproject/mesos/master/work \ --ZK=zk://${HOST_IP}:2181/mesos --quorum=1

启动slave(注意端口,如果marathon中用到80等端口,需要将ports范围足够大)

/usr/local/Cellar/mesos/1.4.1/sbin/mesos-slave --help  查看帮助启动第一个slavesudo /usr/local/Cellar/mesos/1.4.1/sbin/mesos-slave --master=${HOST_IP}:5050 \--log_dir=/Users/lifei/dockerproject/mesos/slave/log --work_dir=/Users/lifei/dockerproject/mesos/slave/work  \--containerizers=docker,mesos  --no-hostname_lookup --ip=${HOST_IP} --resources='ports:[1-32000];'   启动第二个slavesudo /usr/local/Cellar/mesos/1.4.1/sbin/mesos-slave --master=${HOST_IP}:5050 \--log_dir=/Users/lifei/dockerproject/mesos/slave/log2 --work_dir=/Users/lifei/dockerproject/mesos/slave/work2  \--containerizers=docker,mesos  --no-hostname_lookup --ip=${HOST_IP} --resources='ports:[1-32000];'

测试task

/usr/local/Cellar/mesos/1.4.1/bin/mesos-execute --master=localhost:5050 --name=hellomesos --command="echo 'hello,mesos'"

启动marathon

sudo ./bin/start --http_port 8088 --master ${HOST_IP}:5050 --zk zk://${HOST_IP}:2181/marathon -h ${HOST_IP}

测试marathon

Commandwhile [ true ] ; do echo 'Hello Marathon' ; sleep 5 ; done

从marathon中使用docker启动nginx

{  "type": "DOCKER",  "volumes": [],  "docker": {    "image": "library/nginx",    "network": "BRIDGE",    "portMappings": [      {        "containerPort": 80,        "hostPort": 0,        "servicePort": 2000,        "protocol": "tcp",        "labels": {}      }    ],    "privileged": false,    "parameters": [],    "forcePullImage": false  }}使用docker inspect containerid,查看动态分配的hostportps:在container里边, 这个web服务运行的端口是8080(containerPort的值)。在container外,Marathon会分配一个随机端口(hostPort设置是0)

marathon-lb安装

采用bridge方式,host方式失败,不明白问题在哪儿**********{  "id": "/marathon-lb",  "cmd": null,  "cpus": 1,  "mem": 128,  "disk": 0,  "instances": 1,  "constraints": [    [      "hostname",      "UNIQUE"    ]  ],  "container": {    "type": "DOCKER",    "volumes": [      {        "containerPath": "/var",        "hostPath": "/Users/lifei/dockerproject/marathon/marathon-lb-var",        "mode": "RW"      },      {        "containerPath": "/tmp",        "hostPath": "/Users/lifei/dockerproject/marathon/marathon-lb-tmp",        "mode": "RW"      }    ],    "docker": {      "image": "docker.io/mesosphere/marathon-lb",      "network": "BRIDGE",      "portMappings": [        {          "containerPort": 80,          "hostPort": 80,          "servicePort": 10001,          "protocol": "tcp",          "labels": {}        },        {          "containerPort": 9090,          "hostPort": 9090,          "servicePort": 10002,          "protocol": "tcp",          "labels": {}        }      ],      "privileged": true,      "parameters": [],      "forcePullImage": false    }  },  "portDefinitions": [    {      "port": 10001,      "protocol": "tcp",      "labels": {}    },    {      "port": 10002,      "protocol": "tcp",      "labels": {}    }  ],  "args": [    "sse",    "-m",    "http://100.80.128.98:8088",    "--group",    "external"  ]}

测试marathon-lb

{  "id": "/test-lb-nginx",  "cmd": null,  "cpus": 0.2,  "mem": 20,  "disk": 0,  "instances": 2,  "container": {    "type": "DOCKER",    "volumes": [],    "docker": {      "image": "docker.io/nginx",      "network": "BRIDGE",      "portMappings": [        {          "containerPort": 80,          "hostPort": 0,          "servicePort": 80,          "protocol": "tcp",          "labels": {}        }      ],      "privileged": false,      "parameters": [],      "forcePullImage": false    }  },  "healthChecks": [    {      "path": "/",      "protocol": "HTTP",      "portIndex": 0,      "gracePeriodSeconds": 300,      "intervalSeconds": 60,      "timeoutSeconds": 20,      "maxConsecutiveFailures": 3,      "ignoreHttp1xx": false    }  ],  "labels": {    "HAPROXY_GROUP": "external",    "HAPROXY_0_VHOST": "nginx.marathon.mesos"  },  "portDefinitions": [    {      "port": 80,      "protocol": "tcp",      "labels": {}    }  ]}

测试url

http://100.80.128.98:9090/haproxy?statshttp://100.80.128.98

到此,关于"怎么从marathon中使用docker启动nginx"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0