简介

  • Docker Compose是一个用于定义和运行多个Docker容器的工具。它使用简单的YAML文件来配置应用程序的服务、网络和卷等方面的设置。
  • 使用Docker Compose可以轻松地定义和管理多容器应用程序。你可以将整个应用程序的不同组件(例如数据库、Web服务器和应用程序服务器)放在不同的容器中,并使用Compose来定义它们之间的关系和配置。
  • 在一个Compose文件中,你可以指定每个服务的镜像、端口映射、环境变量、卷挂载等设置。你还可以定义网络,使容器能够相互通信,并且可以使用依赖关系来确保服务按正确的顺序启动。
  • 使用Docker Compose是非常简单的。你只需创建一个docker-compose.yaml文件,然后使用docker-compose up命令来启动你的应用程序。Compose会自动下载所需的镜像,并根据配置启动容器。
  • 除了启动应用程序,Compose还提供了其他一些有用的命令,如docker-compose down用于停止并删除所有相关容器,docker-compose ps用于查看正在运行的容器状态等。
  • 总的来说,Docker Compose是一个简单而强大的工具,用于定义和管理多容器应用程序。它使得在开发、测试和部署环境中轻松构建和管理复杂的容器化应用变得更加容易。

docker-compose基础概念

Docker Compose是一个用于定义和运行多个Docker容器的工具。它允许您使用YAML文件来配置应用程序所需的服务、网络和卷等资源,并通过简单的命令来管理整个容器化应用的生命周期。

基础概念包括以下几个方面:

  1. 服务(Services):Compose中的一个服务对应一个容器。服务可以包含多个副本(replicas)。
  2. 容器(Containers):Compose根据服务配置创建和管理容器。每个容器都是服务的一个实例。
  3. 网络(Networks):Compose为应用程序定义了一个默认网络,使得服务可以相互通信。您还可以创建自定义网络来隔离服务。
  4. 卷(Volumes):Compose可以为容器挂载卷,以便数据可以在容器之间共享和持久化存储。
  5. 依赖关系(Dependencies):您可以在Compose文件中指定服务之间的依赖关系,以确保正确的启动顺序。
    通过编写Compose文件,您可以定义应用程序所需的所有服务、其镜像、端口映射、环境变量、卷等配置。然后,使用docker-compose命令运行、停止、重启或删除整个应用程序。

为什么要使用docker-compose

Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,它简化了多容器应用程序的部署过程。使用 Docker Compose 可以通过编写一个 YAML 文件来定义应用程序的服务、网络和存储卷等方面的配置,并通过一个命令来启动、停止和管理这些容器。

使用 Docker Compose 的好处包括:

  1. 简化部署:通过一个文件定义多个容器的配置,可以轻松地在不同环境中部署应用程序,而无需手动配置多个容器。
  2. 高度可移植性:Docker Compose 文件中包含了对应用程序所需的所有依赖关系和配置,可以在不同的主机上轻松地重新创建相同的开发和生产环境。
  3. 灵活性和可扩展性:可以定义多个服务,并通过链接或共享网络来实现服务之间的通信,支持自定义网络配置和容器间的连接。
  4. 一致性和可维护性:通过 Docker Compose 统一管理多个容器,使得整个应用程序的部署、启动、停止和调试更加一致和可维护。
    总之,使用 Docker Compose 可以简化多容器应用程序的部署,提高开发效率,增强应用程序的可移植性和可扩展性。

YAML文件格式及编写注意事项

1、YAML文件格式

YAML(YAML Ain’t Markup Language)是一种人类可读的数据序列化格式。它使用空格缩进来表示层级关系,并使用冒号来标记键值对。YAML文件通常以.yaml.yml作为文件扩展名。

以下是一个示例的YAML文件格式:

# 注释以#开头
key1: value1
key2: value2
# 列表使用短横线 -
list:
  - item1
  - item2
  - item3
# 嵌套结构
nested:
  key3: value3
  key4:
    - item4
    - item5

在这个示例中,有两个键值对key1: value1key2: value2,一个名为list的列表,以及一个嵌套结构nested,其中包含键值对key3: value3和一个名为key4的列表。

  • YAML文件格式简洁易读,常用于配置文件、数据序列化和存储结构化数据等场景。
  • YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号[ ] 括起来,bash用花括号{ } 括起来。

2、YAML格式的注意事项

  • 不支持制表符tab键缩进,只能使用空格缩进
  • 通常开头缩进2个空格
  • 字符后缩进1个空格,如冒号【:】、逗号【,】、横杠【-】
  • 用#号表示注释
  • 如果包含特殊字符用单引号【’ '】引起来作为普通字符,如果用双引号【“ ”】表示特殊字符本身的意思,
  • 布尔值必须用【“ ”】括起来
  • YAML区分大小写

3、YAML数据结构案例

#键值对表示
animal:pets
#数组:一组按次序排列的列表
- cat
- dog
- goldfish
#布尔值
debug: "true"
debug: "false"
#yaml实例
languages:        #序列的映射 
  - java
  - Golang
  - Python
websites:         #映射的映射
  Baidu: www.baidu.com
  Wangyi: www.163.com
  Souhu: www.souhu.com
#或者
languages: ["java","Golong","Python"]
websites:
  Baidu:
    www.baidu.com
  Wangyi:
    www.163.com
  Souhu:
    www.souhu.com
#Json格式
{
  languages: [
    'Java',
    'Golong',
    'Python',
  ],
  websites: [
    Baidu: 'www.baidu.com',
    Wangyi: 'www.163.com',
    Souhu: 'www.souhu.com',
  ]
}

Docker Compose 配置常用字段

1、Docker Compose配置常用字段

Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,它使用 YAML 文件来配置容器的各项参数。以下是 Docker Compose 常用的配置字段:

  1. version: 指定 Docker Compose 文件的版本号。
  2. services: 定义要运行的服务,可以包含多个服务。
  3. image: 指定要使用的镜像。
  4. build: 指定构建镜像所需的 Dockerfile 路径(要指定的Dockerfile文件需要在build标签的子级标签中用dockefile标签指定)。
  5. dockerfile:构建镜像上下文路径。
  6. context:可以是dockerfile路径,或者时执行git仓库的url地址。
  7. hostname:在容器内设置内核参数。
  8. ports: 指定容器的端口映射,暴露容器端口,与-p相同,但是端口不能低于60。
  9. volumes: 挂载一个宿主机目录或命令卷到容器,命令卷要在顶级volumes定义卷名称
  10. volumes_from:从另一个服务或容器挂载卷,可选参数:ro和rw(仅版本‘2’支持)
  11. networks: 指定容器所连接的网络。
  12. network-mode:设置容器的网络模式
  13. environment: 设置容器的环境变量。
  14. command: 指定容器启动时要执行的命令,会覆盖容器启动后默认执行的命令(会覆盖dockefile中的CMD指令)
  15. container_name:指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量。
  16. privileged:用来给容器root权限,注意是不安全的,true
  17. depends_on: 指定服务之间的依赖关系,此标签用于解决容器的依赖,启动先后问题。如启动应用容器,需要先启动数据库容器。php:depends_on:- apache- mysql
  18. restart: 指定容器在退出后是否自动重启,重启策略:1、no,默认策略,在容器退出时不重启容器2、on-failure,在容器非正常退出时(退出状态非0),才会重启容器3、on-failure:3 在容器非正常退出时,重启容器,最多重启3次4、always,在容器退出时总是重启容器,5、unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器。
  19. links: 指定连接到其他服务的别名。
  20. expose: 指定容器暴露的端口,但不进行主机端口映射。
  21. healthcheck: 指定容器的健康检查配置。
  22. labels: 为容器添加标签,用于元数据描述。
  23. logging: 配置容器的日志记录。
  24. tmpfs: 将临时文件系统挂载到容器中。
  25. cap_add: 添加额外的 Linux 特权。
  26. cap_drop: 限制容器的 Linux 特权。
  27. devices: 指定容器使用的设备。
  28. sysctls: 设置容器的内核参数。
  29. ulimits: 设置容器的资源限制。
  30. cgroup_parent: 指定容器所属的 cgroup 父级。
  31. stop_grace_period: 指定容器停止的优雅期限。
  32. deploy: 指定部署和运行服务相关配置,只能在swarm模式使用
  33. configs: 指定服务使用的配置文件。
  34. secrets: 指定服务使用的敏感数据。
  35. scale: 设置服务的副本数量。
  36. external_links: 连接到外部容器。
  37. extends: 继承其他服务的配置。

这些是一些常用的 Docker Compose 配置字段,可以根据具体需求进行配置。请注意,这只是其中的一部分,Docker Compose 还有更多高级功能和配置选项。

2、Docker-compose常用命令

运行这些命令需要结合docker-compose一起使用。
且必须要在含有docker-compose.yml文件的目录中才可以使用,不然报错。

  1. docker-compose up:创建和启动容器
  2. docker-compose down:停止容器,删除容器、网络、数据卷和镜像
  3. docker-compose ps:列出容器,查看容器状态
  4. docker-compose logs:查看容器日志
  5. docker-compose build:重新构建服务
  6. docker-compose restart:重启容器
  7. docker-compose stop:停止容器
  8. docker-compose start:启动容器
  9. docker-compose rm:删除容器
  10. docker-compose exec:在容器内执行命令
  11. docker-compose pull:拉取镜像
  12. docker-compose push:推送镜像
  13. docker-compose config:检查配置文件
  14. docker-compose events:查看容器事件
  15. docker-compose scale:指定一个服务容器启动数量
  16. docker-compose top:显示正在运行的容器进程

安装docker-compose

1.下载和安装docker-compose

一般按照官网下载的地址去下载curl -L https://github.com/docker/compose/releases/download/2.17.2/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose或者使用国内的地址sudo curl -L https://get.daocloud.io/docker/compose/releases/download/2.17.2/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose虽然下载很快,但是容易报错,无法使用
因此特意上传一个截至目前最新版本的,版本为:docker-compose v2.17.2-linux-x86-64
链接: docker-compose
官网地址:

下载后,上传到服务器已经建好的目录:/usr/local/bin/,然后赋予权限:
sudo chmod +x /usr/local/bin/docker-compose
查看版本:docker-compose -v ,如果报找不到路径,建立软链接:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
验证是否安装成功:

docker-compose --version  #之前的v1版本命令是docker-compose --version

2.docker-compose卸载

rm $DOCKER_CONFIG/cli-plugins/docker-compose
09-15 04:44