Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用一个 YAML 文件来配置应用程序的服务、网络和存储等方面,并使用简单的命令来管理应用程序的生命周期。
使用 Docker Compose,你可以将多个容器(即服务)组合在一起,形成一个完整的应用程序。每个服务都可以由一个或多个容器组成,并且可以定义各种配置选项,如映射端口、挂载卷、环境变量等。
安装 Docker Compose 可以通过以下步骤完成:
步骤 1:下载 Docker Compose 的二进制文件。你可以通过以下命令在 official GitHub 仓库中找到适合你操作系统的最新版本的二进制文件:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
步骤 2:对下载的二进制文件赋予执行权限:
sudo chmod +x /usr/local/bin/docker-compose
步骤 3:创建软链接,以使 docker-compose
命令可用于全局执行:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
这样,你就可以通过在终端窗口中运行 docker-compose
命令来使用 Docker Compose 了。你可以通过运行以下命令检查安装是否成功:
docker-compose --version
如果成功安装,会显示 Docker Compose 的版本号。
卸载 Docker Compose 也很简单,只需删除相关的二进制文件即可。通过运行以下命令,你可以删除二进制文件:
sudo rm /usr/local/bin/docker-compose
sudo rm /usr/bin/docker-compose
这将删除 Docker Compose 的二进制文件,完成卸载操作。
请注意,Docker Compose 需要 Docker 引擎的支持,所以在安装 Docker Compose 之前,请确保已经正确安装和配置了 Docker 引擎。
docker-compose -h # 查看帮助
docker-compose up # 启动所有docker-compose服务
docker-compose up -d # 启动所有docker-compose服务并后台运行
docker-compose down # 停止并删除容器、网络、卷、镜像。
docker-compose exec yml里面的服务id # 进入容器实例内部 docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker-compose ps # 展示当前docker-compose编排过的运行的所有容器
docker-compose top # 展示当前docker-compose编排过的容器进程
docker-compose logs yml里面的服务id # 查看容器输出日志
docker-compose config # 检查配置
docker-compose config -q # 检查配置,有问题才有输出
docker-compose restart # 重启服务
docker-compose start # 启动服务
docker-compose stop # 停止服务
下面是一个简单的 Docker Compose 示例文件 docker-compose.yml
,其中包含了两个服务 web
和 db
:
version: "3"
services:
web:
build: .
ports:
- "8000:80"
volumes:
- ./web:/var/www/html
depends_on:
- db
db:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_DATABASE=myapp
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
在这个示例中,web
服务使用当前目录中的 Dockerfile 构建镜像,并将容器的 80 端口映射到宿主机的 8000 端口。此外,将宿主机中的 ./web
目录挂载到容器的 /var/www/html
目录。
db
服务使用预先构建的 MySQL 镜像,并通过环境变量设置了 root 用户的密码和创建的数据库名称。
你可以在该示例的目录中使用以下命令来启动这两个服务:
docker-compose up
这将根据配置文件启动 web
和 db
服务,并将它们自动连接到同一个创建的网络中。你可以使用 docker-compose.yml
中定义的服务名称来进行通信,例如 web
服务可以使用 db
服务的 hostname 进行数据库连接。
除此之外,Docker Compose 还提供了其他一些有用的命令,如 docker-compose down
关闭服务,docker-compose ps
查看服务的状态,docker-compose logs
查看服务的日志等。
Docker Compose 是一个方便而强大的工具,能够简化多容器应用程序的管理和部署。你可以通过使用 YAML 文件定义整个应用程序的结构和配置,并通过一条命令轻松启动、停止和管理应用程序的生命周期。
当使用 Docker Compose 编写 docker-compose.yml
文件时,它遵循一定的结构和语法。下面是一个典型的 docker-compose.yml
文件的结构,以及相应的说明:
version: '3'
services:
service1:
# 配置选项和值
service2:
# 配置选项和值
networks:
network1:
# 配置选项和值
volumes:
volume1:
# 配置选项和值
让我们详细解释一下每个部分:
version: '3'
:指定 Docker Compose 文件的版本。它指定了构建和运行的配置选项的支持范围。根据你的需求,可以指定不同的版本号。
services
(服务):这是定义在 Docker Compose 文件中的各个服务配置的主要部分。每个服务都在这里定义,并且可以包含一系列配置选项。
networks
(网络):该部分用于定义 Docker Compose 文件中使用的网络配置选项。你可以在这里定义并配置网络。
volumes
(卷):这里定义了 Docker Compose 文件中使用的卷(volumes)配置选项。你可以在这里设置卷的具体配置属性。
在每个服务下面的部分,你可以定义各种配置选项和值,以满足你的需求。以下是一些常见的配置选项:
image
:指定服务要使用的 Docker 镜像。
container_name
:指定服务所创建的容器的名称。
ports
:指定如何暴露服务端口。
volumes
:指定容器和主机之间的文件卷挂载关系。
environment
:指定容器的环境变量。
depends_on
:指定服务之间的依赖关系,控制启动顺序。