compose是用于定义和运行多容器docker应用程序的工具,通过compose可以使用YML文件来配置应用程序需要的所有服务,然后使用一个命令,就可以从YML文件配置中创建并启动所有服务
compose.machine.swarm.是docker原生提供的三大编排工具
能够在docker节点上,以单引擎模式(single-engine mode)进行多容器应用的部署和管理,多数的现代应用通过多个更小的微服务互相协同来组成一个完整可用的应用
部署和管理繁多的服务是困难的, docker-compose 并不是通过脚本和冗长的docker命令来将应用组件组织起来,而是通过一个声明式的配置文件来描述整个应用,从而使用一个命令完成部署,应用部署成功后,还可以通过一系列简单的命令对其完整生命周期的管理,并可置于版本控制系统中进行管理
apt update && apt install apt-transport-https ca-certificates software-properties-common -y curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt update && apt install -y docker-ce docker-compose
docker-compoes -v
开发模式可以给予最大权限
xxx@ub20:~$ which docker /usr/bin/docker-compose
chmod 777 /usr/bin/docker-compose
docker-compose 使用YAML文件来定义多服务的应用,YAML是JSON的一个子集因此也可以使用JSON
注意
docker-compose默认使用文件名docker-compose.yml,可更改
文件包含4个一级属性version services networks volumes
version
必须指定,而且总是位于文件第一行,其定义了compose文件格式的版本,并非定义docker-compose或docker引擎的版本
services
用于定义不同的应用服务 "如下列例子中apisix和etcd服务"
networks
用于创建新的docker网络,默认情况下,docker-compose会创建bridge网络,这是一种单主机网络,只能够实现同一主机上容器的链接,也可使用driver定义不同的网络类型
volumes
用于指引docker来创建新的卷
version: "3" services: apisix: image: "apache/apisix:${APISIX_DOCKER_TAG}" restart: always volumes: - ./apisix_conf/master/config.yaml:/usr/local/apisix/conf/config.yaml:ro depends_on: - etcd ports: - "9180:9180/tcp" - "9080:9080/tcp" - "9091:9091/tcp" - "9443:9443/tcp" networks: - apisix etcd: image: bitnami/etcd:3.4.9 user: root restart: always volumes: - ../example/etcd_data:/etcd_data environment: ETCD_DATA_DIR: /etcd_data ETCD_ENABLE_V2: "true" ALLOW_NONE_AUTHENTICATION: "yes" ETCD_ADVERTISE_CLIENT_URLS: "http://0.0.0.0:2379" ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379" ports: - "2379:2379/tcp" networks: - apisix networks: apisix: driver: bridge
build指定为构建镜像上下文路径
container_name
指定自定义容器名称,而不是生成的默认名称
depends_on
设置依赖关系(设置服务启动顺序依赖,关闭顺序为最后启动,最先关闭)
devives指定设备映射列表
dns自定义dns服务
expose暴露端口,但不映射到宿主机,只被链接的服务访问
extra_hosts添加主机名映射
image指定容器运行的镜像
logging服务的日志记录配置
network_mode设置网络模式
restart重启策略
secrets存储敏感数据,例如密码
volumes将主机的数据卷或文件挂在到容器里
原文
-a, --all 不要忽略以开头的条目。
启动服务
shelldocker-compose up -d
停止服务
shelldocker-compose down
列出所有容器
shelldocker-compose ps
查看服务日志
shelldocker-compose logs
构建或重新构建服务
shelldocker-compose build
注:
1.