2020-10-01
docker
00
请注意,本文编写于 1672 天前,最后修改于 526 天前,其中某些信息可能已经过时。

目录

Docker-compose
简介
安装
ubuntu安装(ub20.04)
检查版本
声明式的配置文件(yml格式)
语法
常用命令

Docker-compose

compose是用于定义和运行多容器docker应用程序的工具,通过compose可以使用YML文件来配置应用程序需要的所有服务,然后使用一个命令,就可以从YML文件配置中创建并启动所有服务

简介

compose.machine.swarm.是docker原生提供的三大编排工具
能够在docker节点上,以单引擎模式(single-engine mode)进行多容器应用的部署和管理,多数的现代应用通过多个更小的微服务互相协同来组成一个完整可用的应用
部署和管理繁多的服务是困难的, docker-compose 并不是通过脚本和冗长的docker命令来将应用组件组织起来,而是通过一个声明式的配置文件来描述整个应用,从而使用一个命令完成部署,应用部署成功后,还可以通过一系列简单的命令对其完整生命周期的管理,并可置于版本控制系统中进行管理

安装

ubuntu安装(ub20.04)

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

声明式的配置文件(yml格式)

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指定为构建镜像上下文路径

  • context 上下文路径
  • dockerfile 指定构建镜像的dockerfile文件名
  • args 添加构建参数,这是只能在构建过程中访问的环境变量
  • labels 设置构建镜像的标签
  • target 多层构建,可以指定构建哪一层

container_name 指定自定义容器名称,而不是生成的默认名称
depends_on 设置依赖关系(设置服务启动顺序依赖,关闭顺序为最后启动,最先关闭) devives指定设备映射列表 dns自定义dns服务
expose暴露端口,但不映射到宿主机,只被链接的服务访问
extra_hosts添加主机名映射
image指定容器运行的镜像
logging服务的日志记录配置
network_mode设置网络模式

  • network_mode: "bridge"
  • network_mode: "host"
  • network_mode: "none"
  • network_mode: "service:[service name]"
  • network_mode: "container:[container name/id]"

restart重启策略
secrets存储敏感数据,例如密码
volumes将主机的数据卷或文件挂在到容器里

原文

-a, --all 不要忽略以开头的条目。

常用命令

启动服务

shell
docker-compose up -d

停止服务

shell
docker-compose down

列出所有容器

shell
docker-compose ps

查看服务日志

shell
docker-compose logs

构建或重新构建服务

shell
docker-compose build

注:
1.