Docker Compose 容器管理

Docker Compose 容器管理

一、Docker Compose 介绍

我们操作单个服务时,需要先创建DockerFile,然后 build 创建容器并运行。但要是有100个微服务呢,显然一个一个的去操作不显示,而且服务之间有强的依赖关系。这时候就需要Docker Compose 来轻松高效的管理容器。
作用: 批量容器编排。

Compose 是Docker 官方的开源项目。需要安装

DockerFile 让程序在任何地方运行。web 服务,redis,mysql, nginx… 多个容器。run Compose
在这里插入图片描述
docker-compose up 100 个服务。
Compose:重要的概念

  • 服务service,容器,应用(web,redis,mysql…)
  • 项目project。一组关联的容器。

二、Docker Compose 安装与测试

官方文档

下载 docker-compose

[root@izbp1ca5vr2fxjgbmapekkz ~]# curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   423  100   423    0     0    131      0  0:00:03  0:00:03 --:--:--   131
100 16.7M  100 16.7M    0     0  4511k      0  0:00:03  0:00:03 --:--:-- 29.8M

授权安装

[root@izbp1ca5vr2fxjgbmapekkz bin]# sudo chmod +x /usr/local/bin/docker-compose

官方测试用例

  1. Create a directory for the project:
 mkdir composetest
 cd composetest
  1. Create a file called app.py in your project directory and paste this in:
import time

import redis
from flask import Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)

def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)

@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)
  1. Create another file called requirements.txt in your project directory and paste this in:
flask
redis
  1. In your project directory, create a file named Dockerfile and paste the following:
# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
  1. Create a file called docker-compose.yml in your project directory and paste the following:
version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"
  1. ls
    在这里插入图片描述
    7.启动:From your project directory, start up your application by running docker-compose up.
    在这里插入图片描述
    8 查看镜像
    在这里插入图片描述
    发现redis,python自动帮我们下载了。

    1. 停止服务 docker-compose down

在这里插入图片描述
以前都是单个 docker run 启动容器,现在是通过 docker-compose编写yml文件,通过 compose 一键启动所有服务,或停止。

总结:

  1. 应用 app.py
  2. Dockerfile 应用打包为镜像
  3. Docker-compose.yml 文件 (定义整个服务,需要的环境。web,redis)完整的上线服务
  4. 启动 compose 项目 (docker-compose up)

流程:

  1. 创建网络
  2. 执行 docker-compose.yml
  3. 启动服务

三、Docker Compose 详解

1. yml 书写规则

整个yml可分为三层:

version: ''   # 版本
service:      # 服务
	服务1: web
		# 服务配置
		images
		build
		network
	服务2: redis
		...
	服务3: redis
# 其他配置  网络/,全局规则
volumes:
networks:
configs:

2. 自己编写微服务上线

  1. 新建项目demo
    controller
package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class controller {

    @Autowired
    StringRedisTemplate redisTemplate;

    @RequestMapping("/hello")
    public String Hello() {
        Long views = redisTemplate.opsForValue().increment("views");
        return "hello world !!! views: "+ views;
    }
}

application.properties

server.port=8080
spring.redis.host=redis
  1. 编写 Dockerfile 文件
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
  1. 编写 docker-compose.yml 文件
version: '3.8'
services:
  kuangapp:
    build: .
    image: kuangapp
    depends_on:
      - redis
    ports:
      - "8090:8080"
  redis:
    image: "redis:alpine"
  1. 项目打包上传至服务器,并且上传 Dockerfile 文件和 docker-compose.yml 文件
    在这里插入图片描述
  2. 执行 docker-compose up 命令 运行
    在这里插入图片描述
  3. 测试
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值