Compose是用于定义和运行复杂Docker应用的工具。你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成。
1. 安装Docker和Compose
# 当前最新的Docker是1.6.2,Compose为1.2.0
curl -s https://get.docker.io/ubuntu/ | sudo sh
sudo apt-get update
sudo apt-get install lxc-docker
# 参考http://docs.docker.com/compose/install/#install-compose
curl -L https://github.com/docker/compose/releases/download/1.2.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose上面这个方法真的慢出翔,可以通过Python pip安装。
apt-get install python-pip python-dev
pip install -U docker-compose
这样compose就安装好了,查看一下compose的版本信息:
chmod +x /usr/local/bin/docker-compose
docker-compose -version
docker-compose 1.2.0
2. 使用Compose
使用Compose只需要简单的三个步骤:首先,使用Dockerfile来定义你的应用环境:
FROM python:2.7
ADD ./code
WORKDIR /code
RUN pip install -r requirements.txt
其中,requirements.txt中的内容包括:
再用Python写一个简单的app.py
from flask importFlaskfrom redis importRedisimport os
app =Flask(__name__)
redis =Redis(host='redis', port=6379)@app.route('/')def hello():
redis.incr('hits')return'Hello World! I have been seen %s times.'% redis.get('hits')if __name__ =="__main__":
app.run(host="0.0.0.0", debug=True)
第二步,用一个compose.yaml来定义你的应用,他们可以在下个互隔离的容器中组成你的应用。
web:
build:.
command: python app.py
ports:-"5000:5000"
volumes:-.:/code
links:- redis
redis:
image: redis
第三步,执行docker-compose up来启动你的应用,它会根据compose.yaml的设置来pull/run这俩个容器。
Creating myapp_redis_1...
Creating myapp_web_1...
Building web...
Step 0 : FROM python:2.7
2.7: Pulling from python
...
Status: Downloaded newer image for python:2.7
---> d833e0b23482
Step 1 : ADD . /code
---> 1c04b1b15808
Removing intermediate container 9dab91b4410d
Step 2 : WORKDIR /code
---> Running in f495a62feac9
---> ffea89a7b090
Attaching to myapp_redis_1, myapp_web_1
......
redis_1 | [1] 17 May 10:42:38.147 * The server is now ready to accept connections on port 6379
web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
web_1 | * Restarting with stat
3. Yaml文件参考
在上面的yaml文件中,我们可以看到compose文件的基本结构。首先是定义一个服务名,下面是yaml服务中的一些选项条目:
image
:镜像的ID
build
:直接从pwd的Dockerfile来build,而非通过image选项来pull
links
:连接到那些容器。每个占一行,格式为SERVICE[:ALIAS],例如 – db[:database]
external_links
:连接到该compose.yaml文件之外的容器中,比如是提供共享或者通用服务的容器服务。格式同links
command
:替换默认的command命令
ports
: 导出端口。格式可以是:
ports:-"3000"-"8000:8000"-"127.0.0.1:8001:8001"
expose
:导出端口,但不映射到宿主机的端口上。它仅对links的容器开放。格式直接指定端口号即可。
volumes
:加载路径作为卷,可以指定只读模式:
volumes:-/var/lib/mysql
- cache/:/tmp/cache
-~/configs:/etc/configs/:ro
volumes_from
:加载其他容器或者服务的所有卷
environment:- RACK_ENV=development
- SESSION_SECRET
env_file
:从一个文件中导入环境变量,文件的格式为RACK_ENV=development
extends
:扩展另一个服务,可以覆盖其中的一些选项。一个sample如下:
common.yml
webapp:
build:./webapp
environment:- DEBUG=false- SEND_EMAILS=false
development.yml
web:extends:
file: common.yml
service: webapp
ports:-"8000:8000"
links:- db
environment:- DEBUG=true
db:
image: postgres
net
:容器的网络模式,可以为”bridge”, “none”, “container:[name or id]”, “host”中的一个。
dns
:可以设置一个或多个自定义的DNS地址。
dns_search
:可以设置一个或多个DNS的扫描域。
其他的working_dir, entrypoint, user, hostname, domainname, mem_limit, privileged, restart, stdin_open, tty, cpu_shares
,和docker
run
命令是一样的,这些命令都是单行的命令。例如:
cpu_shares:73
working_dir:/code
entrypoint: /code/entrypoint.sh
user: postgresql
hostname: foo
domainname: foo.com
mem_limit:1000000000
privileged:true
restart: always
stdin_open:true
tty:true
4. docker-compose常用命令
在第二节中的docker-compose up
,这两个容器都是在前台运行的。我们可以指定-d命令以daemon的方式启动容器。除此之外,docker-compose还支持下面参数:
--verbose
:输出详细信息
-f
制定一个非docker-compose.yml命名的yaml文件
-p
设置一个项目名称(默认是directory名)
docker-compose的动作包括:
build
:构建服务
kill -s SIGINT
:给服务发送特定的信号。
logs
:输出日志
port
:输出绑定的端口
ps
:输出运行的容器
pull
:pull服务的image
rm
:删除停止的容器
run
: 运行某个服务,例如docker-compose run web python manage.py shell
start
:运行某个服务中存在的容器。
stop
:停止某个服务中存在的容器。
up
:create + run + attach容器到服务。
scale
:设置服务运行的容器数量。例如:docker-compose scale web=2 worker=3
分享到:
相关推荐
Compose是一个用于定义和运行多容器Docker应用的工具,只需要一个Compose的配置文件和一个简单的命令就可以创建并运行应用所需的所有容器。在配置文件中,所有容器通过services来定义,并使用docker-compose命令启动...
Docker和Docker Compose则是容器化技术的利器,能够方便地管理和部署应用环境。本项目"RocketMQ-DockerCompose"是将RocketMQ集成到Docker Compose环境中,实现了一键式开发环境的部署。 首先,我们来看"Docker-...
Docker Compose提供了一种简单而强大的方式,通过YAML文件定义多容器服务,使得Java微服务的部署和管理变得轻而易举。本文将详细介绍Docker Compose的概念、安装、使用以及如何在Java微服务中进行部署。 Docker ...
- **Docker Compose**:当涉及到多容器应用时,Docker Compose 成为了一种不可或缺的工具。它允许开发者在一个 YAML 文件中定义一组容器的服务,并通过一个命令即可启动或停止整个应用。结合 Docker Machine 的能力...
5. **应用场景**:对于需要频繁调整 Docker Compose 配置的开发团队,或者希望简化多服务应用部署流程的个人开发者,docker-composer 是一个理想的工具。它可以用于教学、开发环境配置、小型项目部署等场景,提升...
在IT行业中,Docker Compose是一个强大的工具,用于定义和运行多容器的Docker应用程序。它通过YAML文件(docker-compose.yml)来配置服务,允许开发者定义环境变量、网络、卷等,并通过单一命令管理这些服务的生命...
Docker Compose允许通过一个yaml文件定义和运行一个多容器的应用,这样就能一键启动所有服务,极大地简化了本地开发和测试流程。 总结而言,这个压缩包提供了一个完整的基于SpringBoot和Docker的微服务架构示例,...
7. **Docker Compose集成**:Origami可能利用Docker Compose来管理和协调多个Docker容器,Compose是一个定义和运行多容器Docker应用的工具,使得配置文件可以定义整个应用的结构,而Origami则可能提供了更直观的...
为了简化部署过程,`debj_SpringBoot_ELK+Kafka_resources.zip`包含了`docker-compose.yml`文件,该文件定义了运行ELK和Kafka所需的各种Docker容器。通过运行`docker-compose up`命令,可以一键启动所有服务,包括:...
Docker 提供了一个轻量级的虚拟化环境,而 docker-compose 则是用来管理和编排多容器 Docker 应用的工具。 2. **克隆 valet-db 仓库** 使用 Git 或其他方式克隆 `valet-db-master` 压缩包到本地,如: ``` git ...
`batectify`是一个用JavaScript编写的工具,它的主要功能是将传统的Docker容器配置文件(如Docker Compose或Dockerfile)转换为batect.yml格式。Batect是一个自动化工具,用于构建、测试和部署Java和Android项目,它...
Docker Compose或Kubernetes等工具则进一步简化了多服务的编排和管理,使得整个微服务系统可以方便地在不同环境下部署和扩展。 3. 自动化构建与部署 Jenkins作为持续集成/持续部署(CI/CD)的利器,可以帮助团队...
在Docker Compose或Kubernetes中,可以将Filebeat作为sidecar容器部署,确保每个应用容器的日志都能被正确收集。 **4. 输出选项** Filebeat支持多种输出方式,包括直接将日志数据发送到Elasticsearch、Logstash,...
11-5_基于Docker-compose与Traefik的容器化部署演示.mp4 11-6_Kubernetes基础原理.mp4 11-7_基于Kubernetes的容器化部署演示.mp4 第12章 “云存储”系统之持续集成部署 12-1_ubuntu下离线安装harbor1.6.mp4 12-...
- **与Docker Compose对比**:Docker Compose主要用于容器化部署,Pomander则更侧重于传统服务器环境的部署。 5. **插件和扩展** - Pomander的插件机制允许用户自定义部署过程中的任务,如添加日志记录、性能监控...
Kubernetes或Docker Compose等工具则用于容器编排,自动化管理容器的生命周期,确保服务的稳定运行。 在系统设计上,可能会采用RESTful API设计原则,实现前后端分离,前端通过HTTP/HTTPS协议调用后端接口获取数据...
12. 运维工具:如Ansible用于自动化运维,Docker Compose简化了Docker容器的编排,Nginx是常用的反向代理和负载均衡服务器。 13. 持续集成/持续部署(CI/CD):Jenkins、Travis CI和GitHub Actions可实现代码的自动...
Docker Compose是一个定义和运行多容器Docker应用的工具,通过一个YAML文件来配置服务,然后使用docker-compose命令来创建和管理这些服务。在这个项目中,"docker-compose up"会根据配置文件启动Jupyter Notebook...
6. `docker-compose.yml` - Docker Compose的配置文件,用于定义和运行多容器Docker应用程序,使得部署更方便。 7. `intelligence-visual` - 这可能是项目的一个模块,涉及可视化方面的功能,如数据分析结果的展示。...