..
声明:
本博客欢迎转发,但请保留原作者信息!
博客地址:http://blog.csdn.net/halcyonbaby
新浪微博:@寻觅神迹
内容系本人学习、研究和总结,如有雷同,实属荣幸!
compose项目简介
compose项目来源于之前的Fig项目,使用python代码编写。Apache2.0的license。
compose项目主要用于编排部署基于docker的应用。本身与docker/swarm配合度很高。目前发布到1.4版,但是根据官方说明,并不适合生产环境使用。
compose主要用于开发/测试场合。适合小规模应用的部署。compose以命令行方式运行,本身没有daemon。只提供应用编排部署的能力。
相对于kubernetes来说功能比较简单,相当于kubernetes的一个子集。
compose基本功能
compose目前支持以下命令
[root@localhost Django]# docker-compose
Define and run multi-container applications with Docker.
Usage:
docker-compose [options] [COMMAND] [ARGS...]
docker-compose -h|--help
Options:
-f, --file FILE Specify an alternate compose file (default: docker-compose.yml)
-p, --project-name NAME Specify an alternate project name (default: directory name)
--verbose Show more output
-v, --version Print version and exit
Commands:
build Build or rebuild services
help Get help on a command
kill Kill containers
logs View output from containers
port Print the public port for a port binding
ps List containers
pull Pulls service images
restart Restart services
rm Remove stopped containers
run Run a one-off command
scale Set number of containers for a service
start Start services
stop Stop services
up Create and start containers
migrate-to-labels Recreate containers to add labels
version Show the Docker-Compose version information
compose命令大多依赖于yml文件,默认使用当前目录下的“docker-compose.yml“,也可以通过-f指定。
yml文件的例子
[root@localhost Django]# cat docker-compose.yml
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db
[root@localhost Django]# cat Dockerfile
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
命令详解
- build(构建yml中某个服务的镜像)
如上,web这个服务是依赖于镜像build的。在本地 也存在Dockerfile文件。
可以使用docker-compose build来构建服务的镜像。 - ps(查看已经启动的服务状态)
- kill(停止某个服务)
- logs(可以查看某个服务的log)
- port(打印绑定的public port)
- pull(pull服务镜像)
- up(启动yml定义的所有服务)
- stop(停止yml中定义的所有服务)
- start(启动被停止的yml中的所有服务)
- kill(强行停止yml中定义的所有服务)
- rm(删除yml中定义的所有服务)
- restart(重启yml中定义的所有服务)
- scale(扩展某个服务的个数,可以向上或向下)
- migrate-to-labels(这个没有实际尝试。根据介绍是将服务从1.2迁移到1.3带labels的版本。docker之前不支持label)
- version(查看compose的版本)