Docker Compose

160 阅读3分钟

Docker Compose

  • 实现对docker容器集群的快速编排

Docker Compose的组成

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

Docker Compose的安装

  • 下载二进制文件
# 官方下载链接
sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

# 国内下载链接
sudo curl -L https://download.fastgit.org/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
[root@node-01 ~]# uname -s
Linux
[root@node-01 ~]# uname -m
x86_64
  • 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
  • 查看是否安装成功
docker-compose -v

Docker Compose的卸载

  • 如果是二进制文件安装直接删除二进制文件即可
sudo rm /usr/local/bin/docker-compose
  • 如果是通过pip安装的执行卸载命令
sudo pip uninstall docker-compose

Docker Compose的使用

  • 新建文件夹docker-compose并编写app.py文件
# 新建文件夹
mkdir docker-compose
# 编写app.py文件
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! 该页面已被访问 {} 次。\n'.format(count)

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)
  • 编写Dockerfile文件
vim Dockerfile

# 文件内容如下
FROM python:3.6-alpine
ADD . /code
WORKDIR /code
RUN pip install redis flask
CMD ["python", "app.py"]
  • 编写docker-compose.yml文件
version: '3'
services:
 web:
  build: .
  ports:
   - "5000:5000"
 redis:
  image: "redis:alpine"
  • 运行compose项目
docker-compose up
  • 访问项目
curl http://172.18.0.3:5000/
  • 查看输出结果
[root@node-01 ~]# curl http://172.18.0.3:5000
Hello World! 该页面已被访问 1 次。
[root@node-01 ~]# curl http://172.18.0.3:5000
Hello World! 该页面已被访问 2 次。
[root@node-01 ~]# curl http://172.18.0.3:5000
Hello World! 该页面已被访问 3 次。
[root@node-01 ~]# curl http://172.18.0.3:5000/
Hello World! 该页面已被访问 4 次。

Docker Compose相关命令

docker-compose可选参数

-f 文件名  # 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
-p 项目名 # 指定项目名称,默认将使用所在目录名称作为项目名。如:docker-compose_redis_1
--verbose # 输出更多调试信息。
-v # 打印版本并退出。

build命令

  • 构建项目中的服务容器,会执行Dockerfile构建镜像
  • 可以随时在项目目录下运行 docker-compose build 来重新构建服务
# 构建项目
docker-compose build

# 构建项目中的Redis
docker-compose build redis

config命令

  • 验证docker-compose.yml文件格式是否正确,若正确则显示配置,错误显示错误原因
docker-compose config

down命令

  • 停止up命令启动的容器,并删除网络
docker-compose down

restart命令

  • 重启运行的项目中的服务
docker-compose restart [SERVICE...]

run命令

  • 在指定服务上执行命令
docker-compose run redis ping www.baidu.com

scale命令

  • 设置指定服务运行的容器个数
docker-compose scale [SERVICE=NUM...]

# 通过 service=num 的参数来设置数量。例如:
docker-compose scale redis=2 web=3

start命令

  • 启动运行的项目中的服务
docker-compose start [SERVICE...]

rm命令

  • 删除服务内的所有容器,需要先停止服务
# 停止服务
docker-compose stop

# 删除服务
docker-compose rm

# 删除服务,同时删除容器挂载的数据卷
docker-compose rm -v

其他命令

# 列出项目中的所有容器
docker-compose ps

# 列出项目中包含的镜像
docker-compose images

# 查看日志
docker-compose logs 服务名 # docker-compose logs web