You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
4.2 KiB
131 lines
4.2 KiB
[appendix]
|
|
= Docker Compose
|
|
|
|
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。
|
|
使用 Dockerfile 我们很容易定义一个单独的应用容器。
|
|
然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。
|
|
例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器;
|
|
再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。
|
|
如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。
|
|
这时候就需要一个工具能够管理一组相关联的的应用容器,这就是 Docker Compose。
|
|
|
|
Compose有2个重要的概念:
|
|
|
|
* 项目(Project): 由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
|
|
* 服务(Service): 一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
|
|
|
|
== 模版文件
|
|
模板文件是使用 Compose 的核心, 涉及到的指令关键字也比较多, 默认的模板文件名称为 docker-compose.yml,格式为 YAML 格式。
|
|
|
|
[source,bash]
|
|
----
|
|
version: '3'
|
|
services:
|
|
elasticsearch:
|
|
image: elasticsearch:6.8.5
|
|
container_name: elasticsearch
|
|
restart: always
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
volumes:
|
|
- /app/skywalking/elasticsearch/data:/usr/share/elasticsearch/data:rw
|
|
- /app/skywalking/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
|
|
- /app/skywalking/elasticsearch/conf/jvm.options:/usr/share/elasticsearch/config/jvm.options
|
|
- /app/skywalking/elasticsearch/logs:/usr/share/elasticsearch/logs:rw
|
|
environment:
|
|
- TZ=Asia/Shanghai
|
|
- xpack.monitoring.enabled=false
|
|
- xpack.watcher.enabled=false
|
|
ports:
|
|
- "9200:9200"
|
|
- "9300:9300"
|
|
|
|
ulimits:
|
|
nproc: 65535
|
|
nofile:
|
|
soft: 20000
|
|
hard: 40000
|
|
----
|
|
|
|
== 常用命令
|
|
=== 列出 Compose 文件中包含的镜像
|
|
[source,bash]
|
|
----
|
|
# 列出 Compose 文件中包含的镜像
|
|
docker-compose -f docker-compose.yml images
|
|
----
|
|
|
|
=== 列出项目中目前的所有容器
|
|
[source,bash]
|
|
----
|
|
# 列出项目中目前的所有容器
|
|
docker-compose -f docker-compose.yml ps
|
|
----
|
|
|
|
=== 构建(重新构建)项目中的服务容器
|
|
[source,bash]
|
|
----
|
|
# 构建(重新构建)项目中的服务容器
|
|
# 一般搭配自定义镜像, 比如编写的 Dockfile, 功能类似于 docker build
|
|
docker-compose -f docker-compose.yml build
|
|
----
|
|
|
|
=== up
|
|
[source,bash]
|
|
----
|
|
# 构建(重新构建)项目中的服务容器
|
|
# 一般搭配自定义镜像, 比如编写的 Dockfile, 功能类似于 docker build
|
|
# 参数说明:
|
|
# -d 在后台运行服务容器, 默认前台运行,控制台将会同时打印所有容器的输出信息,可以很方便进行调试
|
|
# --no-color 不使用颜色来区分不同的服务的控制台输出
|
|
# --no-deps 不启动服务所链接的容器
|
|
# --force-recreate 强制重新创建容器,不能与 --no-recreate 同时使用
|
|
# --no-recreate 如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用,默认先停止容器,然后重新创建
|
|
# --no-build 不自动构建缺失的服务镜像
|
|
# -t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)
|
|
docker-compose -f docker-compose.yml up
|
|
----
|
|
|
|
=== down
|
|
[source,bash]
|
|
----
|
|
# 停止用up命令所启动的容器并移除网络
|
|
docker-compose -f docker-compose.yml down
|
|
----
|
|
|
|
=== stop
|
|
[source,bash]
|
|
----
|
|
# 停止已经处于运行状态的容器,但不删除它
|
|
# 停止所有服务
|
|
docker-compose -f docker-compose.yml stop
|
|
|
|
# 停止指定的名为 xxx 的服务
|
|
docker-compose -f docker-compose.yml stop xxx
|
|
----
|
|
|
|
=== restart
|
|
----
|
|
# 重启项目中的服务
|
|
docker-compose -f docker-compose.yml restart
|
|
----
|
|
|
|
=== logs
|
|
----
|
|
# 查看服务容器的输出
|
|
# 默认情况下, docker-compose 将对不同的服务输出使用不同的颜色来区分, 可以通过 --no-color 来关闭颜色
|
|
|
|
# 查看整体的日志
|
|
docker-compose -f docker-compose.yml logs
|
|
|
|
# 查看名为 xxx 的服务的日志
|
|
docker-compose -f docker-compose.yml logs xxx
|
|
----
|
|
|
|
=== rm
|
|
----
|
|
# 移除容器
|
|
docker-compose -f docker-compose.yml rm
|
|
----
|
|
|
|
|