博客
关于我
docker-compose入门及使用
阅读量:543 次
发布时间:2019-03-08

本文共 3407 字,大约阅读时间需要 11 分钟。

Docker Compose简介

Docker Compose 是 Docker 官方开源的容器化编排工具,专为定义和管理多容器应用而设计。它能够简化复杂的应用部署流程,帮助开发者轻松构建和运行包含多个服务的容器化应用。

Docker Compose 安装

Docker Compose 由 Python 编写,支持通过 pip 包管理安装。安装命令如下:

pip install docker-compose

如果使用 YUM 安装,可以执行以下命令:

wget https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repoyum install docker-compose

也可以通过克隆官方 GitHub 仓库进行二进制安装。

Docker Compose 的核心概念

Docker Compose 的管理结构分为三个层次:工程(Project)、服务(Service)、容器(Container)。一个 Docker Compose 文件(.docker-compose.yml)定义了工程中的所有服务,每个服务可以包含多个容器实例,定义了镜像、容器名、端口、网络等配置。

例如,以下是一个简单的 docker-compose.yml 文件示例:

version: '2.3'services:  log:    image: goharbor/harbor-log:v2.1.5    container_name: harbor-log    restart: always    dns_search: .    cap_drop:      - ALL    cap_add:      - CHOWN      - DAC_OVERRIDE      - SETGID      - SETUID    volumes:      - /var/log/harbor/:/var/log/docker/:z      - type: bind        source: ./common/config/log/logrotate.conf        target: /etc/logrotate.d/logrotate.conf      - type: bind        source: ./common/config/log/rsyslog_docker.conf        target: /etc/rsyslog.d/rsyslog_docker.conf    ports:      - 127.0.0.1:1514:10514    networks:      - harbor  registry:    image: goharbor/registry-photon:v2.1.5    container_name: registry    restart: always

Docker Compose 命令参考

Docker Compose 提供了丰富的命令行工具来管理容器化应用。常用命令包括:

  • 列出运行中容器:
  • docker-compose ps
    1. 查看服务日志:
    2. docker-compose logs
      1. 构建服务容器:
      2. docker-compose build
        1. 启动服务容器:
        2. docker-compose start nginx
          1. 停止服务容器:
          2. docker-compose stop nginx
            1. 删除服务容器:
            2. docker-compose rm nginx
              1. 启动并构建服务容器:
              2. docker-compose up
                1. 停止并删除服务容器:
                2. docker-compose down
                  1. 设置服务容器数量:
                  2. docker-compose scale nginx=3 redis=3
                    1. 在服务容器中执行命令:
                    2. docker-compose run web bash

                      详细命令和使用方法请参考官方文档:Docker Compose 参考文档


                      Docker Compose 实践案例

                      部署一个 Python Web 应用

                      1. 创建工程目录

                      首先,创建一个用于存放 Docker Compose 项目的目录:

                      mkdir mycomposecd mycompose

                      2. 创建 Flask 应用

                      编写一个基本的 Flask Web 应用(app.py):

                      import timeimport redisfrom flask import Flaskapp = 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 f' I have been seen {count} times.\n'

                      3. 创建依赖项

                      在项目根目录创建 requirements.txt 文件,指定项目依赖项:

                      flaskredis

                      4. 创建 Dockerfile

                      编写一个用于构建应用的 Dockerfile:

                      # syntax=docker/dockerfile:1FROM python:3.7-alpineWORKDIR /codeENV FLASK_APP=app.pyENV FLASK_RUN_HOST=0.0.0.0RUN apk add --no-cache gcc musl-dev linux-headersCOPY requirements.txt requirements.txtRUN pip install -r requirements.txtEXPOSE 5000COPY . .CMD ["flask", "run"]

                      5. 创建 Docker Compose 文件

                      在项目目录中创建 docker-compose.yml 文件,定义 Web 和 Redis 服务:

                      version: '3.0'services:  web:    build: .    ports:      - "5000:5000"  redis:    image: "redis:alpine"

                      6. 构建与运行

                      在项目目录中执行以下命令启动容器:

                      docker-compose up -d

                      此时,你可以通过浏览器访问 http://localhost:5000 查看应用运行情况。

                      7. 挂载文件

                      为了方便代码开发和调试,可以在 docker-compose.yml 中添加挂载配置:

                      version: '3.0'services:  web:    build: .    ports:      - "5000:5000"    volumes:      - .:/code    environment:      FLASK_ENV: development  redis:    image: "redis:alpine"

                      8. 验证部署

                      通过 docker ps 查看运行中容器:

                      docker ps

                      你应该能看到名为 mycompose_web_1 的容器正在运行。


                      通过以上步骤,你已经成功使用 Docker Compose 部署了一个简单的 Python Web 应用。如果需要更高级的功能,可以参考官方文档进行深入学习。


                      欢迎在评论区留言交流!如果你觉得文章有价值,别忘了收藏、点赞和分享哦!

    转载地址:http://yuxiz.baihongyu.com/

    你可能感兴趣的文章
    Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
    查看>>
    Netpas:不一样的SD-WAN+ 保障网络通讯品质
    查看>>
    Netty WebSocket客户端
    查看>>
    Netty工作笔记0011---Channel应用案例2
    查看>>
    Netty工作笔记0014---Buffer类型化和只读
    查看>>
    Netty工作笔记0050---Netty核心模块1
    查看>>
    Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
    查看>>
    Netty常见组件二
    查看>>
    netty底层源码探究:启动流程;EventLoop中的selector、线程、任务队列;监听处理accept、read事件流程;
    查看>>
    Netty核心模块组件
    查看>>
    Netty框架的服务端开发中创建EventLoopGroup对象时线程数量源码解析
    查看>>
    Netty源码—2.Reactor线程模型一
    查看>>
    Netty源码—4.客户端接入流程一
    查看>>
    Netty源码—4.客户端接入流程二
    查看>>
    Netty源码—5.Pipeline和Handler一
    查看>>
    Netty源码—6.ByteBuf原理二
    查看>>
    Netty源码—7.ByteBuf原理三
    查看>>
    Netty源码—7.ByteBuf原理四
    查看>>
    Netty源码—8.编解码原理二
    查看>>
    Netty源码解读
    查看>>