一、Docker-compose概述
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。通过Docker Compose,您可以使用YAML文件来配置应用程序需要的所有服务,并使用一个命令从YAML文件配置中创建并启动所有服务。
Compose 中有两个重要的概念:
-
服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 -
项目(project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。想要使用docker-compose需要安装好docker环境。
使用步骤:
-
安装docker环境 -
下载docker-compose可执行文件 -
编写.yaml文件定义项目和服务 -
启动并管理多个容器
举例:以部署wordpress博客为例,如果使用docker需要手动部署mysql、redis、wordpress博客,而且容器间还有依赖关系,先启动mysql容器再启动wordpress容器。如果是以docker-compose则可以将3个容器定义为一个项目,项目包含3个服务,并且先启动mysql和redis,最后启动wordpress并连接。
二、下载安装
docker-compose是一个可执行文件,直接下载到Bin目录,赋予执行权限即可。可以直接在服务器下载或者下载完成后上传到/usr/local/bin/
目录。
# 下载二进制文件
sudo curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 赋予权限
chmod +x /usr/local/bin/docker-compose
# 测试
docker-compose -v
简单使用
在目录下创建.yaml文件。
# 创建一个docker-compose.yaml文件,内容如下:
version: '3'
services:
mysql:
image: mysql:latest
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- mysql_data:/var/lib/mysql
redis:
image: redis:latest
ports:
- "6379:6379"
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wordpress
REDIS_HOST: redis
depends_on:
- mysql
- redis
volumes:
mysql_data:
说明:
-
文件格式:yml文件的格式层级关系是缩进两个英文状态的空格,不能用缩进符等替代空格。 -
指令与值:如果指令后面需要写值必须是英文冒号+英文空格方可写值,如:image: “mysql:5.7”。 -
多值指令:对于可以写多个值的指令(一般这样的指令都是这个单词的复数格式,如volumes、networks、ports等),对于这些指令的值需要冒号换行后使用 - 指定一个值,如果有多个值,使用多个 - 指定。如: ports: #指定端口映射 - "9003:9989" #端口映射关系 和ports一起相当于-p 9003:9989 - "8080:8080"。 -
文件名:docker-compose文件的名称只能是以下四个之一:docker-compose.yml、docker-compose.yaml、 compose.yml、compose。 -
服务定义:每个服务都必须明确定义在services字段下,并有一个唯一的服务名称。服务定义包括镜像名称、环境变量、端口映射等。 -
依赖关系:可以使用depends_on字段来定义服务的依赖关系,以确保在启动服务之前先启动依赖的服务。 -
网络配置:可以使用networks字段来定义自定义网络,并在服务中指定该网络。 -
卷挂载:可以使用volumes字段来定义卷,并在服务中指定挂载点。
简单说就是以创建一个指定名称的yaml文件,以缩进格式编写定义服务于容器名称,端口映射,卷挂载,环境变量,与docker部署一致。必须在services下面定义容器配置,然后使用镜像等等内容。
启动整个项目,在.yaml文件的当前目录执行docker-compose up -d
# 启动容器
docker-compose up -d
# 重启
docker-compose restart
# 停止删除容器
docker-compose down
使用docker-compose可以实现整个项目的停止重启或者单个服务的管理。
常见的管理命令:
-
启动和运行服务:docker-compose up。 -
停止服务:docker-compose stop。 -
重新启动服务:docker-compose restart。 -
构建服务:docker-compose build。 -
删除服务:docker-compose rm。 -
列出服务:docker-compose ps。 -
查看日志:docker-compose logs。 -
获取服务容器的详细信息:docker-compose inspect。 -
进入容器:docker-compose exec [服务名称] [命令]。 -
删除项目:docker-compose down。
总结:通过在docker-compose.yaml批量创建容器,并且容器间可以实现依赖与顺序启动,方便进行管理。通过在services下面定义服务,服务的定义与docker一致,注意缩进格式即可。
本文由 mdnice 多平台发布