# Docker 和 Docker Compose 的区别

在使用容器化技术开发和部署应用程序时,常常会遇到 Docker 和 Docker Compose 这两个概念。虽然它们都是用于容器化的工具,但功能和使用方式有所不同。下面我们将分步骤介绍 Docker 和 Docker Compose 的区别。

## 流程概述

下面是使用 Docker 和 Docker Compose 的整体流程概述:

| 步骤 | 描述 |
|------|----------------------------------------------------------------|
| 1 | 编写 Dockerfile 文件来定义镜像 |
| 2 | 使用 Dockerfile 构建一个 Docker 镜像 |
| 3 | 运行 Docker 镜像并创建一个 Docker 容器 |
| 4 | 使用 Docker Compose 编写一个 docker-compose.yml 文件 |
| 5 | 使用 Docker Compose 启动应用程序服务 |

## 具体步骤

### 步骤 1:编写 Dockerfile 文件

首先,我们需要编写一个 Dockerfile 文件来定义我们的镜像。Dockerfile 是用来构建 Docker 镜像的文件,其中包含了构建镜像所需的指令和操作。

```Dockerfile
# 指定基础镜像
FROM ubuntu:latest

# 设置工作目录
WORKDIR /app

# 复制应用程序文件到镜像中
COPY . .

# 安装应用程序依赖
RUN apt-get update && apt-get install -y python3

# 定义容器启动命令
CMD ["python3", "app.py"]
```

### 步骤 2:构建 Docker 镜像

接下来,我们使用 Dockerfile 构建一个 Docker 镜像。在终端中运行以下命令:

```bash
docker build -t myapp .
```

这将会在本地构建一个名为 myapp 的 Docker 镜像。

### 步骤 3:运行 Docker 镜像

现在,我们可以运行 Docker 镜像并创建一个 Docker 容器。运行以下命令:

```bash
docker run -d myapp
```

这将在后台运行名为 myapp 的 Docker 容器。

### 步骤 4:编写 docker-compose.yml 文件

Docker Compose 是一个用于定义和运行多个容器化应用程序的工具。我们需要编写一个 docker-compose.yml 文件来定义我们的服务。

```yaml
version: '3'
services:
myapp:
build: .
ports:
- "8080:80"
```

在上面的示例中,我们定义了一个名为 myapp 的服务,指定了构建镜像的路径,并将容器的端口映射到主机的端口。

### 步骤 5:启动应用程序服务

最后,我们使用 Docker Compose 启动我们的应用程序服务。在终端中运行以下命令:

```bash
docker-compose up -d
```

这将会启动我们在 docker-compose.yml 文件中定义的服务。

通过以上步骤,我们成功使用了 Docker 和 Docker Compose 来构建、运行和管理容器化的应用程序。记住,Docker 用于构建和运行单个容器,而 Docker Compose 用于管理多个容器的服务。

希望这篇文章能帮助你理解 Docker 和 Docker Compose 的区别以及如何使用它们来容器化你的应用程序。如果你有任何问题或疑问,欢迎留言讨论!