九、compose入门

于2021年10月9日学习

零基础初学一门新技术建议先看视频,了解运作原理之后再看文档,也就是先看老师讲再去看文档,事半功倍,个人建议。

一、简介

  1. 是Docker 容器集群编排工具
  2. 是Docker 官方的开源项目
  3. 是Python编写的,后被GO语言重写

先来个简短的介绍,不了解不要紧,接着往后看

参考资料:docker入门到实践

二、安装与卸载

2.1 二进制安装

curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

# 国内用户可以使用以下方式加快下载
curl -L https://download.fastgit.org/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

#测试安装成功
docker-compose --version

也可直接下载上传到服务器,目前最新版本为v2.0.1

2.2 pip安装

这种方式是将 Compose 当作一个 Python 应用来从 pip 源中安装。

pip install -U docker-compose

2.3 使用bash补全命令

curl -L https://raw.githubusercontent.com/docker/compose/1.27.4/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

这个脚本需要FQ才能下载,我已经上传到了腾讯云盘

2.4 卸载

1)二进制安装直接删除文件即可。

rm /usr/local/bin/docker-compose

2)pip安装使用如下命令删除

pip uninstall docker-compose

三、原理

Compose通过案例来讲比较容易理解,下面开始讲个简单的案例。

3.1 术语

service:服务,一个容器叫一个服务,一个项目中通常由多个相关联的服务组成。

project:项目,由多个相关联的容器组成的环境叫项目。

现在不明白没事,先记住这两个概念即可,看后面的案例。

3.2 案例

此案例会用到3个文件,分别是app.py,Dockerfile,docker-compose.yml文件,我们先新键一个名为web的文件夹,再进入web文件夹分别创建如下三个文件。

app.py文件

用python编写的web文件,记录页面被访问次数。

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
    count = redis.incr('hits')
    return 'Hello World! 该页面已被访问 {} 次。
'.format(count)

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

Dockerfile

创建一个python运行容器

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

docker-compose.yml

compose模板文件,跟Dockerfile文件相似,不过Dockerfile用来定制创建一个容器,docker-compose.yml是用来定制创建一组先关联的容器,在这里,容器都叫服务。

version: '3'
services:

  web:
    build: .
    ports:
     - "5000:5000"

  redis:
    image: "redis:alpine"

:'
version:语法版本,目前最高版本为3
services:定义服务,后续的web跟redis都是容器,在项目中叫服务
web:web服务容器
build:使用Dockerfile创建web服务容器
ports:将宿主机的5000端口映射到容器5000端口
image:使用镜像,将使用redis:alpine的镜像创建redis容器
'

运行compose项目

docker-compose up

访问本地5000端口,就能访问到该web服务,每次刷新页面,计数就会加1

效果如下

image-20211009152650371

通过这个案例,我们知道docker-compose.yml是compose工具的核心文件,用来创建整个项目,该案例中就创建了一个由web容器跟redis数据库容器环境搭建而成的项目,在该项目中,这两个容器都称之为服务。

四、总结

  1. compose是容器编排工具,用于创建和维护一组相关联的容器,不必我们再去使用docker run一个一个的去创建跟维护容器。

  2. compose核心文件是docker-compose.yml,里面记录了这一组容器是如何被创建,使用的什么镜像,声明什么端口,运行的什么服务跟命令。在这里,里面的每个容器都叫服务,而这一组容器组成的整体叫做项目。

五、参考资料

Docker从入门到实践

编程不良人讲Compose

今天的学习是为了以后的工作更加的轻松!
原文地址:https://www.cnblogs.com/tz90/p/12238459.html