Docker Compose是一个工具,用于定义和运行多容器应用程序的工具;
Docker Compose通过yml文件定义多容器的docker应用;
Docker Compose通过一条命令根据yml文件的定义去创建或管理多容器;
Docker Compose 是用来做Docker 的多容器控制,是一个用来把 Docker 自动化的东西。有了 Docker Compose 你可以把所有繁复的 Docker 操作全都一条命令,自动化的完成。

Docker Compose可以做到以下几点:
Docker Compose有以下特征:
更高的可移植性,Docker Compose仅需一个docker-compse up可以完成按照依赖关系启动所有服务,然后使用docker-compose down轻松将其拆解。帮助我们更轻松地部署复杂的应用程序;
单个主机上的多个隔离环境,Compose可以使用项目名称将环境彼此隔离,这带可以在一台计算机上运行同一环境的多个副本,它可以防止不同的项目和服务相互干扰;
Docker Compose安装的最新的版本Docker Compose version v2.12.2,对于Mac和Windows安装好Docker以后,就已经安装好Docker Compose,不需要手动安装,这里的安装方式是基于Linux的Cnetos的,大家也可以参考官方网站去安装。
由于虚拟机之前已经安装Docker,本次只需要安装compose-plugin即可;虚拟机版本如下:
- [root@localhost ~]# cat /etc/redhat-release
- CentOS Linux release 7.9.2009 (Core)
升级所有包的同时也升级软件和系统内核:
- [root@localhost ~]# sudo yum update
- 已加载插件:fastestmirror, langpacks
- Loading mirror speeds from cached hostfile
- * base: mirror.lzu.edu.cn
- * extras: ftp.ksu.edu.tw
- * updates: mirror.lzu.edu.cn
- 正在解决依赖关系
- --> 正在检查事务
- ---> 软件包 containerd.io.x86_64.0.1.6.8-3.1.el7 将被 升级
- ---> 软件包 containerd.io.x86_64.0.1.6.9-3.1.el7 将被 更新
- ---> 软件包 copy-jdk-configs.noarch.0.3.3-10.el7_5 将被 升级
- ---> 软件包 copy-jdk-configs.noarch.0.3.3-11.el7_9 将被 更新
- ---> 软件包 docker-ce.x86_64.3.20.10.18-3.el7 将被 升级
- ---> 软件包 docker-ce.x86_64.3.20.10.21-3.el7 将被 更新
- ---> 软件包 docker-ce-cli.x86_64.1.20.10.18-3.el7 将被 升级
- ---> 软件包 docker-ce-cli.x86_64.1.20.10.21-3.el7 将被 更新
- ---> 软件包 docker-ce-rootless-extras.x86_64.0.20.10.18-3.el7 将被 升级
- ---> 软件包 docker-ce-rootless-extras.x86_64.0.20.10.21-3.el7 将被 更新
- ---> 软件包 docker-scan-plugin.x86_64.0.0.17.0-3.el7 将被 升级
- ---> 软件包 docker-scan-plugin.x86_64.0.0.21.0-3.el7 将被 更新
- ---> 软件包 java-1.8.0-openjdk.x86_64.1.1.8.0.345.b01-1.el7_9 将被 升级
- ---> 软件包 java-1.8.0-openjdk.x86_64.1.1.8.0.352.b08-2.el7_9 将被 更新
- ---> 软件包 java-1.8.0-openjdk-headless.x86_64.1.1.8.0.345.b01-1.el7_9 将被 升级
- ---> 软件包 java-1.8.0-openjdk-headless.x86_64.1.1.8.0.352.b08-2.el7_9 将被 更新
- ---> 软件包 tzdata.noarch.0.2022d-1.el7 将被 升级
- ---> 软件包 tzdata.noarch.0.2022e-1.el7 将被 更新
- ---> 软件包 tzdata-java.noarch.0.2022d-1.el7 将被 升级
- ---> 软件包 tzdata-java.noarch.0.2022e-1.el7 将被 更新
安装compose-plugin:
根据不同的操作系统选择不同安装命令

- [root@localhost ~]# sudo yum install docker-compose-plugin
- 已加载插件:fastestmirror, langpacks
- Loading mirror speeds from cached hostfile
- * base: mirror.lzu.edu.cn
- * extras: ftp.ksu.edu.tw
- * updates: mirror.lzu.edu.cn
- 正在解决依赖关系
- --> 正在检查事务
- ---> 软件包 docker-compose-plugin.x86_64.0.2.12.2-3.el7 将被 安装
- --> 解决依赖关系完成
查看安装情况
- [root@localhost ~]# docker compose version
- Docker Compose version v2.12.2
Docker Compose命令基本上和Docker相差不多,主要就是对Docker Compose生命周期控制、日志格式等相关命令,可以通过docker-compose --help进行帮助。
- [root@localhost ~]# docker compose --help
-
- Usage: docker compose [OPTIONS] COMMAND
-
- Docker Compose
-
- Options:
- --ansi string Control when to print ANSI control characters ("never"|"always"|"auto") (default "auto")
- --compatibility Run compose in backward compatibility mode
- --env-file string Specify an alternate environment file.
- -f, --file stringArray Compose configuration files
- --profile stringArray Specify a profile to enable
- --project-directory string Specify an alternate working directory
- (default: the path of the, first specified, Compose file)
- -p, --project-name string Project name
-
- Commands:
- build Build or rebuild services
- convert Converts the compose file to platform's canonical format
- cp Copy files/folders between a service container and the local filesystem
- create Creates containers for a service.
- down Stop and remove containers, networks
- events Receive real time events from containers.
- exec Execute a command in a running container.
- images List images used by the created containers
- kill Force stop service containers.
- logs View output from containers
- ls List running compose projects
- pause Pause services
- port Print the public port for a port binding.
- ps List containers
- pull Pull service images
- push Push service images
- restart Restart service containers
- rm Removes stopped service containers
- run Run a one-off command on a service.
- start Start services
- stop Stop services
- top Display the running processes
- unpause Unpause services
- up Create and start containers
- version Show the Docker Compose version information
-
- Run 'docker compose COMMAND --help' for more information on a command.
- #构建建启动nignx容器
- docker-compose up -d nginx
- #进入nginx容器中
- docker-compose exec nginx bash
- #将会停止UP命令启动的容器,并删除容器
- docker-compose down
- #显示所有容器
- docker-compose ps
- #重新启动nginx容器
- docker-compose restart nginx
- #构建镜像
- docker-compose build nginx
- #不带缓存的构建
- docker-compose build --no-cache nginx
- #查看nginx的日志
- docker-compose logs nginx
- #查看nginx的实时日志
- docker-compose logs -f nginx
- #验证(docker-compose.yml)文件配置,
- #当配置正确时,不输出任何内容,当文件配置错误,输出错误信息
- docker-compose config -q
- #以json的形式输出nginx的docker日志
- docker-compose events --json nginx
- #暂停nignx容器
- docker-compose pause nginx
- #恢复ningx容器
- docker-compose unpause nginx
- #删除容器
- docker-compose rm nginx
- #停止nignx容器
- docker-compose stop nginx
- #启动nignx容器
- docker-compose start nginx