一次学会 Docker Compose:部署和管理多个 Docker 应用程序

一、Docker Compose 简介

Docker Compose 是 Docker 官方提供的一个工具,用于定义和运行多个 Docker 容器的应用程序,可以通过一个 YAML 文件来配置应用的服务,然后使用 docker-compose 命令来启动、停止和管理应用的服务。

使用 Docker Compose 的好处是可以避免手动编写和执行一大堆的 docker run 命令,而是使用一个配置文件来定义整个应用的服务,从而实现简单、高效、一致性的应用部署和管理。

二、Docker Compose 的安装

Docker Compose 可以通过以下两种方式进行安装:

1.使用 pip 安装

sudo pip install docker-compose

2.下载二进制文件安装

在 Docker Compose 的官方网站(https://docs.docker.com/compose/install/) 上可以下载适用于不同操作系统的二进制文件,然后将其解压到PATH 路径下即可。

3.直接在linux上进行命令下载安装

  • 打开终端,并使用以下命令下载 Docker Compose 二进制文件:
sudo curl -L "https://github.com/docker/compose/releases/download/{version}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

在上述命令中,将 {version} 替换为您要下载的 Docker Compose 版本号。您可以在 Docker Compose 的官方 GitHub 页面上找到最新的版本号。

  • 授权 Docker Compose 二进制文件:
sudo chmod +x /usr/local/bin/docker-compose
  • 验证 Docker Compose 是否正确安装:
docker-compose --version

如果输出版本信息,则说明 Docker Compose 安装成功。

注意:为了在命令行中使用 docker-compose 命令,您必须拥有对应的权限。您可以将当前用户添加到 docker 用户组中,以便无需使用 sudo 命令即可运行 docker 命令和 docker-compose 命令。

三、Docker Compose 的使用

1.编写 Docker Compose 文件

Docker Compose 的核心是通过 YAML 文件来定义应用的服务,以下是一个简单的例子:

version: '3'

services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
    depends_on:
      - redis
  redis:
    image: "redis:alpine"

该文件定义了两个服务:web 和 redis,其中 web 服务使用当前目录下的 Dockerfile 来构建镜像,将容器内的 5000 端口映射到主机的 5000 端口,并将当前目录挂载到容器内的 /code 目录,依赖 redis 服务;redis 服务则使用官方提供的 redis:alpine 镜像。

2.启动 Docker Compose 应用

使用以下命令来启动应用:

docker-compose up

该命令会根据当前目录下的 docker-compose.yml 文件来创建并启动应用的服务。如果需要在后台运行,则可以加上 -d 参数:

docker-compose up -d

3.停止 Docker Compose 应用

使用以下命令来停止应用:

docker-compose down

该命令会停止并删除所有服务的容器、网络和数据卷。

4.查看 Docker Compose 应用的状态

使用以下命令可以查看应用的服务状态:

docker-compose ps

该命令会列出所有服务的容器名称、ID、状态和端口映射等信息。

四、Docker Compose 的实战应用

在实际的应用场景中,我们通常需要同时部署多个容器化应用程序,并进行协同工作。这时候,使用 Docker Compose 就显得非常方便和必要了。

下面,我们以一个简单的 Node.js 应用程序为例,演示如何使用 Docker Compose 部署和管理多个 Docker 应用程序。

步骤一:编写 Dockerfile 文件

首先,我们需要编写 Dockerfile 文件来构建 Node.js 应用程序的镜像。

FROM node:12.18.2-alpine

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

以上 Dockerfile 文件指定了基础镜像为 Node.js 12.18.2 版本的 Alpine 版本。我们在容器内部的工作目录 /app 中安装了应用程序所需要的依赖,然后将应用程序代码复制到容器内部,最后暴露应用程序的默认端口 3000,并以 npm start 命令启动应用程序。

步骤二:编写 Docker Compose 文件

接下来,我们需要编写 Docker Compose 文件来定义我们的服务。

version: '3'

services:
  app:
    build: .
    ports:
      - '3000:3000'

以上 Docker Compose 文件定义了一个服务,服务名称为 app,使用当前目录下的 Dockerfile 文件构建镜像,并将容器内部的端口 3000 映射到宿主机上的端口 3000。

步骤三:启动服务

在完成了 Dockerfile 文件和 Docker Compose 文件的编写之后,我们就可以使用 Docker Compose 启动服务了。

docker-compose up

执行上述命令之后,Docker Compose 会自动构建镜像,并启动容器,此时我们可以通过 localhost:3000 访问应用程序。

步骤四:管理服务

当我们需要管理多个容器化应用程序时,Docker Compose 提供了一些非常方便的命令,例如:

  • docker-compose ps:查看容器状态。
  • docker-compose up -d:以后台模式启动服务。
  • docker-compose stop:停止服务。
  • docker-compose down:停止并删除服务。

步骤五:扩展服务

如果我们需要扩展应用程序的服务,例如增加一个 Redis 缓存服务,只需要在 Docker Compose 文件中增加如下定义:

version: '3'

services:
  app:
    build: .
    ports:
      - '3000:3000'
    depends_on:
      - redis
  redis:
    image: redis

以上 Docker Compose 文件中,我们增加了一个 Redis 服务,并在应用程序服务中定义了 Redis 服务的

猜你喜欢

转载自blog.csdn.net/whc888666/article/details/130606450