Docker Compose
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
sudo pip uninstall docker-compose
Docker Compose的使用
- 新建文件夹
docker-compose并编写app.py文件
# 新建文件夹
mkdir docker-compose
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)
vim Dockerfile
# 文件内容如下
FROM python:3.6-alpine
ADD . /code
WORKDIR /code
RUN pip install redis flask
CMD ["python", "app.py"]
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
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命令
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