一. 前言
docker-compose
是 Docker 官方提供的一个工具,用于定义和运行多个 Docker 容器的应用。
它通过一个 YAML 文件(通常是 docker-compose.yml)来配置应用程序的服务、网络和卷等,然后使用单个命令来启动、停止和管理整个应用。以下是 docker-compose 的基本使用:
二. 安装
1. 安装 Docker Compose
在使用 docker-compose 之前,需要确保你的系统上已经安装了 Docker,并且安装了 Docker Compose。安装 Docker Compose 的具体步骤取决于你的操作系统。以 Linux 系统为例,可以通过以下命令安装(以官方 GitHub 仓库的最新发布版本为例):
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
安装完成后,可以通过运行 docker-compose --version 来验证安装是否成功。
2. 编写 docker-compose.yml 文件
docker-compose.yml 文件是 docker-compose 的核心配置文件,它定义了应用程序的所有服务、网络、卷等配置。以下是一个简单的示例:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
app:
image: node:12
working_dir: /app
volumes:
- .:/app
command: npm start
depends_on:
- web
在这个示例中,定义了两个服务:web 和 app。web 服务使用 Nginx 镜像,并映射了主机的 80 端口到容器的 80 端口,还挂载了一个本地的 nginx.conf 文件到容器中的 Nginx 配置目录。app 服务使用 Node.js 镜像,设置了工作目录和挂载当前目录到容器中,然后执行 npm start 命令。此外,app 服务还依赖于 web 服务的启动。
3. 使用 docker-compose 命令
docker-compose up
示例二:
docker-compose和dockerfile配合使用
1.docker-compose.yml
"version": "3.7"
services:
server1:
container_name: test-server
build:
context: ./
dockerfile: dockerfile
volumes:
- "/var/apps/test/server1:/var/app"
ports:
- "8080:8080"
2.dockerfile
FROM imgage_name:latest
# 使用官方的Anaconda镜像作为基础镜像
# 设置工作目录[可选]
WORKDIR /var/app
# 定义环境变量
ENV APP_BASE_PATH /var/app
# 使端口80可供此容器外的环境使用
EXPOSE 5000
VOLUME ["/var/app"]
# 定义环境变量
# ENV NAME FAQAPI_ENV
WORKDIR $APP_BASE_PATH/
ENTRYPOINT ["python3", "./app.py"]
3.执行命令
1.运行服务
docker-compose up
2.使用docker重启已构建好的服务
docker restart test-server
docker-compose其他命令
docker-compose up:构建、创建并启动应用程序的容器。
docker-compose down:停止并删除应用程序的容器、网络和卷等。
docker-compose start:启动已创建的应用程序的容器。
docker-compose stop:停止正在运行的应用程序的容器。
docker-compose restart:重启应用程序的容器。
docker-compose pause:暂停应用程序的容器。
docker-compose unpause:取消暂停应用程序的容器。
docker-compose build:重新构建应用程序的容器。
docker-compose logs:查看应用程序容器的日志。
docker-compose ps:列出正在运行的应用程序容器。
docker-compose exec:在运行中的容器中执行命令。
总结
docker-compose 是一个强大的工具,它简化了多容器 Docker 应用程序的部署和管理。通过编写一个 docker-compose.yml 文件,并使用 docker-compose 命令,你可以轻松地启动、停止、管理整个应用程序,而无需手动配置和启动每个容器。