1、Docker Compose并不是通过脚本和各种冗长的docker命令来将应用组件组织起来,而是通过一个声明式的配置文件描述整个应用,从而使用一条命令完成部署。
2、Docker Compose在linux上的安装:
curl -L \
https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`\
uname -s`-`uname -m` \ -o /usr/local/bin/docker-compose
修改权限
chmod +x /usr/local/bin/docker-compose
查询版本
docker-compose --version
3、Docker Compose使用YAML文件来定义多服务的应用。YAML是JSON的一个子集,因此也可以使用JSON。Docker Compose默认使用文件名docker-compose.yml
。当然,用户也可以使用-f参数指定具体文件。docker-compose.yml的结构,它包含4个一级key:version、services、networks、volumes。
version是必须指定的,而且总是位于文件的第一行。它定义了Compose文件格式(主要是API)的版本。建议使用最新版本。(Docker引擎、Docker Compose以及Compose文件之间的版本兼容性信息)。
services用于定义不同的应用服务。
networks用于指引Docker创建新的网络。默认情况下,Docker Compose会创建bridge
网络。这是一种单主机网络,只能够实现同一主机上容器的连接。当然,也可以使用driver
属性来指定不同的网络类型。
下面的代码可以用来创建一个名为over-net
的Overlay网络,允许独立的容器(standalone container)连接(attachable)到该网络上。
networks:
over-net:
driver: overlay
attachable: true
volumes
用于指引Docker来创建新的卷。
Docker Compose会将每个服务部署为一个容器,并且会使用key作为容器名字的一部分。
4、常用的启动一个Compose应用(通过Compose文件定义的多容器应用称为“Compose应用”)的方式就是docker-compose up
命令。它会构建所需的镜像,创建网络和卷,并启动容器。
默认情况下,docker-compose up
会查找名为docker-compose.yml
或docker-compose.yaml
的Compose文件。如果Compose文件是其他文件名,则需要通过-f
参数来指定。如下命令会基于名为prod-equus-bass.yml
的Compose文件部署应用。使用-d参数在后台启动应用,使用了&将终端窗口返回
5、使用docker-compose up命令来查看应用的状态。使用docker-compose top命令列出各个服务(容器)内运行的进程。对于已停止的Compose应用,可以使用docker-compose rm
命令来删除。这会删除应用相关的容器和网络,但是不会删除卷和镜像。执行docker-compose restart
命令重启应用。
6、docker-compose的命令汇总:
docker-compose up
命令用于部署一个Compose应用。默认情况下该命令会读取名为docker-compose.yml
或docker-compose.yaml
的文件,当然用户也可以使用-f
指定其他文件名。通常情况下,会使用-d参数令应用在后台启动。
docker-compose stop
命令会停止Compose应用相关的所有容器,但不会删除它们。被停止的应用可以很容易地通过docker-compose restart
命令重新启动。
docker-compose rm
命令用于删除已停止的Compose应用。它会删除容器和网络,但是不会删除卷和镜像。
docker-compose restart
命令会重启已停止的Compose应用。如果用户在停止该应用后对其进行了变更,那么变更的内容不会反映在重启后的应用中,这时需要重新部署应用使变更生效。
docker-compose ps
命令用于列出Compose应用中的各个容器。输出内容包括当前状态、容器运行的命令以及网络端口。
docker-compose down
会停止并删除运行中的Compose应用。它会删除容器和网络,但是不会删除卷和镜像。
7、Docker Compose是一个基于Docker Engine进行安装的Python工具。该工具使得用户可以在一个声明式的配置文件中定义一个多容器的应用,并通过一个简单的命令完成部署。
Compose文件可以是YAML或JSON格式,其中定义了所有的容器、网络、卷以及应用所需的密码。docker-compose
命令行工具会解析该文件,并调用Docker来执行部署。
示例:
version: "3.5"
services:
web-fe:
build: .
command: python app1.py
ports:
- target: 5000
published: 5000
networks:
- counter-net
volumes:
- type: volume
source: counter-vol
target: /code
redis:
image: "redis:alpine"
networks:
counter-net:
networks:
counter-net:
volumes:
counter-vol: