文章插图
一、功能说明容器在当今的云计算中极为重要 , 是构建微服务的重要组成部分 。而一个微服务如果由多个容器 , 比如Nginx+php+MySQL , 单个容器分开管理会非常麻烦。目前华为云、阿里云等厂商都提供了很多Docker容器的管理工具 。Docker Compose 可以轻松、高效的管理容器 , 它是一个用于定义和运行多容器 Docker 的应用程序工具 。
文章插图
一个使用docker-compose的架构示例
二、安装linux下的安装命令:
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composedocker-compose -v
mac环境在使用安装文件安装Docker时会自带Compose三、常用命令
# 列出所有容器docker-compose ps# 看服务日志docker-compose logs# 打印绑定的公共端口 , 下面是个示例docker-compose port eureka 8761# 构建服务docker-compose build# 启动指定服务已存在的容器docker-compose start eureka# 停止已运行的服务的容器docker-compose stop eureka# 删除指定服务的容器docker-compose rm eureka# 构建启动容器 , 更新容器docker-compose up# kill:通过发送 SIGKILL 信号来停止指定服务的容器docker-compose kill eureka# pull:下载服务镜像# scale:设置指定服务运气容器的个数 , 以 service=num 形式指定docker-compose scale user=3 movie=3# run:在一个服务上执行一个命令docker-compose run web bash
四、使用步骤- 使用 Dockerfile 定义应用程序的环境 。
- 使用 docker-compose.yml 定义构成应用程序的服务 , 这样它们可以在隔离环境中一起运行 。
- docker-compose up 启动 。
mkdir composetestcd composetestvim App.py
import timeimport redisfrom flask import Flaskapp = Flask(__name__)cache = redis.Redis(host='redis', port=6379)def get_hit_count():retries = 5while True:try:return cache.incr('hits')except redis.exceptions.ConnectionError as exc:if retries == 0:raise excretries -= 1time.sleep(0.5)@app.route('/')def hello():count = get_hit_count()return 'Hello World! I have been seen {} times.n'.format(count)
这个示例Python去访问redis服务 , 端口6379 。在 composetest 目录中创建另一个名为 requirements.txt 的文件 , 内容如下:
flaskredis
2. 编辑vim Dockerfile文件FROM 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.txtCOPY . .CMD ["flask", "run"]
这个Dockerfile是构建Python容器使用 。字段解释如下:- FROM python:3.7-alpine: 从 Python 3.7 映像开始构建镜像 。
- WORKDIR /code: 将工作目录设置为 /code 。
- ENV FLASK_APP app.py flask主文件设置
- ENV FLASK_RUN_HOST 0.0.0.0 设置 flask 命令使用的环境变量 。
- RUN apk add --no-cache gcc musl-dev linux-headers: 安装 gcc , 以便诸如 MarkupSafe 和 SQLAlchemy 之类的 Python 包可以编译加速 。
- COPY requirements.txt requirements.txt
- RUN pip install -r requirements.txt 复制 requirements.txt 并安装 Python 依赖项 。
- COPY . .: 将 . 项目中的当前目录复制到 . 镜像中的工作目录 。
- CMD ["flask", "run"]: 容器提供默认的执行命令为:flask run 。
# yaml 配置version: '3'services:web:build: .ports:- "5000:5000"redis:image: "redis:alpine"
该 Compose 文件定义了两个服务:web 和 redis 。- version: 指定 docker-compose.yml 文件的写法格式
- services: 多个容器的集合
- web:该 web 服务使用从 Dockerfile 当前目录中构建的镜像 。然后 , 它将容器和主机绑定到暴露的端口 5000 。此示例服务使用 Flask Web 服务器的默认端口 5000。
- redis:该 redis 服务使用 Docker Hub 的公共 Redis 映像 。
- links: 服务之间可以使用服务名称相互访问 , links 允许定义一个别名 , 从而使用该别名访问其它服务 , 如:
version: '2'services:web:build: .links:- "db:database"db:image: postgres
Web 服务就可以使用 db 或 database 作为 hostname 访问 db 服务了 。
推荐阅读
- 店侦探电脑版在哪里下载 店侦探使用教程
- 淘宝新店免费流量扶持怎样使用 淘宝新卖家如何获得免费流量
- 内网渗透神器:使用mimikatz悄悄提取妹子Win7密码
- firefox-hackbar-2.2.9 自签名学习版破解全过程
- 混淆矩阵-不再那么令人混淆了
- 如何监视Python程序的内存使用情况
- 底牌|盘点行走职场6条实用的经验,高手都在偷偷使用,你又知道多少?
- 超级推荐新品推广怎么使用 超级推荐图文推广怎么设置
- 使用抗生素的危害有哪些
- 聚合物电池优缺点及使用方法