第 24 篇 : 单节点构建docker镜像, 并通过marathon启动

本文详细介绍了如何在150机器上部署Docker服务,包括安装Docker,构建SpringBoot应用,制作Dockerfile,创建并运行Docker镜像。接着,文章展示了如何使用Marathon进行服务管理,通过蓝绿发布实现无缝升级,确保服务的稳定性和用户体验。
摘要由CSDN通过智能技术生成

说明

在150机器上部署docker服务以及蓝绿发布

1. 安装docker

参考之前的文章

2. 准备一个jar包

2.1 准备一个controller

import org.springframework.web.bind.annotation.*;

/**
 * @description:
 * @author: 哼唧兽
 * @date: 9999/9/21
 **/
@RestController
@RequestMapping("/docker")
public class DockerController {

    @GetMapping("/status")
    public String status() {
        return "success";
    }
}

2.2 配置application.yml文件

server:
  port: 8888

2.3 在pom中修改jar名称, 放在build里

<finalName>docker-project</finalName>

启动SpringBoot项目, 确保能正常启动

3. 制作Dockerfile

docker pull openjdk:8
cd /usr/local/src
mkdir project
cd project

上传jar文件

vi Dockerfile

内容如下

# 基于java8
FROM openjdk:8
MAINTAINER hahashou "179186501@qq.com"
WORKDIR /usr/local/src
COPY docker-project.jar .
# 设置时区
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
# 暴露8888端口
EXPOSE 8888
# 运行jar文件
CMD java -jar docker-project.jar

制作docker镜像

cd ..
docker build project -t my-project:v1

build镜像

docker images

只有下载测试的hello-world、java8和刚才制作的镜像
已存在的镜像

docker run -d -p 8972:8888 my-project:v1
docker ps
curl http://localhost:8972/docker/status

没啥问题就可以停止服务了

docker kill XXX

再打一个v2版本, 以备后面验证蓝绿发布

docker build project -t my-project:v2

4. 通过marathon启动docker镜像

4.1 清空之前的数据, 并增加日志文件夹

cd /var/lib
rm -rf mesos-agent
rm -rf mesos-agent-log
rm -rf mesos-master
rm -rf mesos-master-log
mkdir mesos-agent
mkdir mesos-agent-log
mkdir mesos-master
mkdir mesos-master-log

4.2 启动mesos, mesos-agent, zookeeper, marathon

mesos

cd /usr/local/src/mesos-1.11.0/build
./bin/mesos-master.sh --ip=192.168.109.150 --work_dir=/var/lib/mesos-master --log_dir=/var/lib/mesos-master-log --logging_level=WARNING

mesos-agent

cd /usr/local/src/mesos-1.11.0/build
./bin/mesos-agent.sh --master=192.168.109.150:5050 --work_dir=/var/lib/mesos-agent --log_dir=/var/lib/mesos-agent-log --containerizers=docker,mesos --logging_level=WARNING

zookeeper

cd /usr/local/src/zookeeper-3.7.1/bin
./zkServer.sh start

marathon

cd /usr/local/src/marathon-1.8.222
./bin/marathon --master 192.168.109.150:5050 --http_port 6060 --logging_level warn

4.3 新开窗口, 新增docker-project.json文件

vi docker-project.json

内容

{
  "id": "my-project",
  "cpus": 0.2,
  "mem": 64,
  "networks": [ { "mode": "container/bridge" } ],
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "my-project:v1"
    },
    "portMappings": [
      { "containerPort": 8888, "hostPort": 0}
    ]
  }
}

4.4 通过Marathon API启动服务

curl -X POST http://localhost:6060/v2/apps -d @docker-project.json -H "Content-type: application/json"
docker ps

服务已启动
注意看端口

curl http://localhost:31678/docker/status

4.5 蓝绿发布, Marathon推荐文章

通过研究Marathon API, 可以看到很漂亮的Restful风格的API。上面创建服务用的是 /v2/apps的 POST请求, 蓝绿发布需要用 /v2/apps/{app_id} 的PUT请求, 请求说明详见API文档。修改docker-project.json中的镜像为 my-project:v2
Note: 最好是修改代码中的请求返回, 重新package, 上传, 替换之前的jar包, 重新build一个docker镜像v2, 效果更好

curl -X PUT http://localhost:6060/v2/apps/my-project -d @docker-project.json -H "Content-type: application/json"

蓝绿发布过程界面
可以看到marathon会新启动一个服务, 待新服务启动成功后, 杀死旧服务, 新端口为31623

curl http://localhost:31623/docker/status

这样, 可以做到用户几乎无感的升级新服务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈兽0026

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值