Docker Compose

用于管理一组容器的, 添加 删除 修改等等。

该工具  通过yml 文件定义多容器的docker应用。

https://docs.docker.com/compose/install/      linux 下载安装在这里

依然还是 flask-hello-word 这个文件夹

[miller@docker4 py-flask-redis]$ ls
app.py  docker-compose.yml  Dockerfile

[miller@docker4 py-flask-redis]$ cat app.py 
from flask import Flask
import redis
import os

host = os.environ.get("REDIS_HOST", "redis")  # REDIS_HOST  这个参数是 docker build 时 -e 参数传进来的系统环境变量。
redis_conn = redis.Redis(host=host, port="6379") app = Flask(__name__) @app.route("/") def web_test(): res = redis_conn.incr("range_key") return "这是我第 %s 次调用, incr 方法。" % res if __name__ == "__main__": app.run(host="0.0.0.0", port=5000)
[miller@docker4 py
-flask-redis]$ cat docker-compose.yml # yml 的格式要求特别严格, 一定要加空格 version: '3' services: redis: # 创建容器 名字叫 redis 这个名字最后会被 docker-compose 组合到最终的名字中 image: 'redis:latest' # 使用的是这个image。 我下载下来了 web: # 创建容器 名字叫 web build: # 这个荣去需要 执行build命令构建! context: '.' # 这个就是路径, docker build xxxxxx . 最后的这个 . 就是要发送给 docker服务端要进行构建的文件目录。 . 就是当前目录 dockerfile: 'Dockerfile' # 构建时使用到的 Dockerfile 的名字。 默认都是Dockerfile ports: # 这个就是 docker build 时,使用到的 -p 参数 - '8800:5000' environment: # 这个是 -e 参数 REDIS_HOST: 'redis'

[miller@docker4 py-flask-redis]$ cat Dockerfile FROM python:3.7.7 LABEL maintainer="5913114@qq.com" COPY app.py /app/ RUN pip install flask redis WORKDIR /app EXPOSE 5000 CMD ["python3", "app.py"]

[miller@docker4 py-flask-redis]$ docker-compose -f docker-compose.yml up -d  # -d 后台执行
Creating network "py-flask-redis_default" with the default driver
Creating py-flask-redis_redis_1 ... done
Creating py-flask-redis_web_1 ... done

我这虚拟主机的 ip是  192.168.42.22

访问 192.168.42.22:8800  就可以访问这个页面。

[miller@docker4 py-flask-redis]$ docker-compose ps
         Name                       Command               State           Ports         
----------------------------------------------------------------------------------------
py-flask-redis_redis_1   docker-entrypoint.sh redis ...   Up      6379/tcp              
py-flask-redis_web_1     python3 app.py                   Up      0.0.0.0:8800->5000/tcp
[miller@docker4 py
-flask-redis]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c7ca7919c352 py-flask-redis_web "python3 app.py" About a minute ago Up About a minute 0.0.0.0:8800->5000/tcp py-flask-redis_web_1 39edcde9b3b2 redis:latest "docker-entrypoint.s…" About a minute ago Up About a minute 6379/tcp py-flask-redis_redis_1

# docker-compose 起名字的时候,  会将 docker-compose up 时的 目录和一个数字  组合进去。

py-flask-redis   _redis_                    1  

       目录名               在yml文件中自己设置的名字    这个数组应该是, 当前构建的第几次。  删除后又会从1开始

这就是 基于Compose 的简单的, 容器编排。  但是Compose只是 适用于单机的。  更多情况下时 集群的。
学习  k8s 吧。 时间宝贵。

原文地址:https://www.cnblogs.com/chengege/p/12685878.html