• Docker Compose命令讲解+文件编写


    docker compose的用处是对 Docker 容器集群的快速编排。(源码

    一个 Dockerfile 可以定义一个单独的应用容器。但我们经常碰到需要多个容器相互配合来完成某项任务的情况(如实现一个 Web 项目,需要服务器、数据库、redis等),Compose 刚好允许通过一个单独的 docker-compose.yml 文件来定义一组相关联的应用容器为一个项目(project)。

    一、安装

    安装完docker(http://t.csdnimg.cn/QLyPN)后就已经完成了compose的安装了,也可从Releases · docker/compose (github.com)仓库单独安装docker compose。

    二、概念

    • 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
    • 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

    Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。

    Compose 项目实现上是调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。

    三、应用举例

    使用docker compose启动一个python服务器,访问后可显示访问次数。

    服务器源码:(对"/"路径建立路由,访问后调用hello函数,在redis中给hits的value+1,然后输出到网页)

    1. from flask import Flask
    2. from redis import Redis
    3. app = Flask(__name__)
    4. redis = Redis(host='redis',port=6379)
    5. @app.route('/')
    6. def hello():
    7. count = redis.incr('hits')
    8. return 'Hello,已被访问{}次。\n'.format(count)
    9. if __name__ == "__main__":
    10. app.run(host="0.0.0.0",debug=True)

    Dockerfile:

    1. FROM python:3.6-alpine
    2. ADD . /code
    3. WORKDIR /code
    4. RUN pip install redis flask
    5. CMD ["python", "app.py"]

    docker-compose.yml:

    1. version: '3'
    2. services:
    3. web:
    4. build: .
    5. ports:
    6. - "5000:5000"
    7. redis:
    8. image: "redis:alpine"

    然后启动容器:sudo docker compose up

    即可启动项目,访问5000端口:

    四、命令讲解

    4.1docker compose up

    docker compose up命令会构建镜像,创建网络、卷,并启动容器,容器名称以项目名称(目录名称)为前缀,以一个数子为后缀(Docker Compose允许扩缩容);创建的镜像、容器、网络和卷可直接使用docker命令进行查看。

    • 参数:
      • -f:docker-compose up会查找名为 docker-compose.yml 或 docker-compose.yaml 的 compose 文件,或使用 -f 指定 compose 文件名。
      • -d:在后台启动应用。

    4.2docker compose down

    上述项目执行down后:

    过程:

    1. 关闭服务。
    2. 删除服务。(注意:容器和网络会被删除,数据卷和镜像不会,所以再次启动就能快很多)

    4.3docker compose ps

    查看项目状态:

    显示容器名称、其中运行的Command、当前状态以及其监听的网络端口。

    4.4docker compose top

    列出各个服务(容器)内运行的进程。(PID编号为在宿主机上的进程ID。)

    4.5docker compose stop

    停止应用(关闭服务),不删除资源:

    4.6docker compose start

    启动停止的应用。

    4.7docker compose restart

    重启应用。

    4.8docker compose rm

    删除已经停止的应用(仅容器和网络)。

    五、docker-compose文件编写

    建议查看:Compose 模板文件 | Docker 从入门到实践

    建议最好还是配合chatgpt进行编写,直接手写可能每一步都会报问题(〃'▽'〃)

  • 相关阅读:
    (十五)使用Redis实现发布订阅功能
    左神:中级提升班5
    鸿蒙开发-HarmonyOS UI架构
    2023年 ZK Hack以及ZK Summit 亮点记
    商业合作保密协议 (3)
    数据结构与算法之一道题感受算法(算法入门)
    学习笔记-角色权限
    web网页设计期末课程大作业:美食餐饮文化主题网站设计——中华美德6页面HTML+CSS+JavaScript
    C++ STL的空间配置器
    Libgdx游戏开发(2)——接水滴游戏实现
  • 原文地址:https://blog.csdn.net/lifetime_gear/article/details/133823398