【docker的那些事】docker-compose、scale扩容缩容

前言

Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用单个命令,从配置创建并启动所有服务。虽然现在Compose的使用不是非常广泛,大多数选择还是更倾向于k8s。但是对于一些不是很大的项目来说Compose依然还是可以去选择的。

传统的使用的docker

在传统的docker使用上,如果我们需要去部署一个springboot的项目,他依赖于redis、mysql等一些环境,我们就需要docker pull去拉取这些镜像,并且逐个去运行,使用起来还是非常不方便的,但是docker compose就能很好的帮助我们去解决这一问题,我们先来体验一下compose再来聊它。

安装docker compose

查看是否安装,如果没有安装请进行安装

docker-compose version
#1.下载
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#2.添加权限信息
sudo chmod +x /usr/local/bin/docker-compose
首先看看传统方式使用

1、创建项目目录

mkdir composetest

cd composetest

2、创建app.py,并写入测试代码

touch app.py
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)

3、新建requirements.txt文件,并写入

touch requirements.txt

vim requirements.txt
flask
redis

4、编写Dockerfile

touch Dockerfile
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
COPY . .
CMD ["flask", "run"]

5、根据Dockerfile生成image

docker build -t python-app-image .

在这里插入图片描述

6、查看镜像
在这里插入图片描述
7、获取redis的镜像

docker pull redis:alpine

8.创建 container

  • 创建网络
docker network ls

docker network create --subnet=172.20.0.0/24 app-net 
  • 创建python程序的container,并指定网段和端口
docker run -d --name web -p 5000:5000 --network app-net python-app-image
  • 创建redis的container,并指定网段
docker run -d --name redis --network app-net redis:alpine

7.访问 ip:5000,发现可以
在这里插入图片描述

使用compose来进行

在上面我们队docker compose已经进行了安装

我们删除上面所创建的images和container,但是保留我们创建的一些文件(Dockerfile那些文件)

docker rm -f $(docker ps -a -aq)

docker rmi $(docker images)

进入app.py所在的目录

touch docker-compose.yaml

vim docker-compose.yaml
version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    networks:
      - app-net

  redis:
    image: "redis:alpine"
    networks:
      - app-net

networks:
  app-net:
    driver: bridge

通过docker-compose.yaml启动

docker-compose up -d

在这里插入图片描述
构建过程可能需要等待一会,构建成功后会帮我们创建所需要的images和container我们继续按照上面的访问进行访问ip:5000
在这里插入图片描述
在这里插入图片描述

发现能够访问,相比较传统的方式,使用
docker-compose.yaml/yml而言,要方便的很多。

docker-compose.yml

上述docker-compose的注释,当然远远不止这些,有兴趣的可以去看看相关语法。

(1)version: ‘3’ #表示docker-compose的版本
(2)services #一个service表示一个container
(3)networks #相当于docker network create app-net
(4)volumes #相当于-v v1:/var/lib/mysql
(5)image #表示使用哪个镜像,本地build则用build,远端则用image
(6)ports #相当于-p 8080:8080
(7)environment #相当于-e

docker-compose常见操作:

  • 查看版本 docker-compose version
  • 根据yml创建service docker-compose up
    –指定yaml:docker-compose up -f xxx.yaml
    –后台运行: docker-compose up
  • 查看启动成功的service:docker-compose ps或者docker ps
  • 查看images:docker-compose images
  • 停止/启动service: docker-compose stop/start
  • 删除service[同时会删除掉network和volume]: docker-compose down
  • 进入到某个service: docker-compose exec redis sh

scale扩缩容

注意在使用扩容的同时,我们需要去掉docker-compose.yml/yaml文件service指定的端口号,因为是在单机中会造成端口占用问题。

停止之前的docker-compose.修改一下配置

version: '3'
services:
  web:
    build: .
    networks:
      - app-net

  redis:
    image: "redis:alpine"
    networks:
      - app-net

networks:
  app-net:
    driver: bridge

启动:

docker-compose up -d

在这里插入图片描述

扩容缩容

docker-compose up --scale web=5 -d

在这里插入图片描述

#查看容器
docker-compose ps

在这里插入图片描述

#查看日志
docker-compose logs web

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker Compose是一个用于定义和运行Docker应用程序的工具。它允许开发人员使用YAML文件来配置多个容器,创建一个完整的应用程序环境。 Docker Compose的最新版本是3。版本3引入了许多新的功能和改进,使得使用Docker Compose更加方便和强大。 首先,版本3支持多个网络。以前的版本只支持默认网络,而版本3允许开发人员在应用程序中定义自己的网络。这使得容器间的通信更加灵活,并且可以更好地组织和管理容器。 其次,版本3引入了服务扩展。这意味着现在可以使用Docker Compose来扩展一个服务的实例数量。只需在docker-compose.yaml文件中定义所需的实例数,并使用命令"docker-compose up --scale <service-name>=<number-of-instances>"即可实现服务的扩展。 此外,版本3还加入了对Docker配置文件的支持。现在,可以在docker-compose.yaml文件中直接指定Docker的配置文件,而不需要使用额外的命令。 最后,版本3还引入了一些新的命令和选项,使得使用Docker Compose更加方便和灵活。例如,现在可以使用"docker-compose down"命令停止并删除应用程序环境,使用"--build"选项重新构建镜像,以及使用"--no-cache"选项避免使用缓存。 总之,Docker Compose的最新版本是3,它引入了许多新的功能和改进,使得使用Docker Compose更加方便和强大。开发人员可以使用YAML文件来定义和运行多个容器,创建一个完整的应用程序环境,并且可以方便地扩展服务的实例数量、使用Docker配置文件以及执行其他方便的命令和选项。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陈橙橙丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值