A. 什么是 Docker Compose?
Docker Compose 是一个用于定义和管理多容器 Docker 应用程序的工具。使用 Docker Compose,您可以使用一个 YAML 文件(通常命名为 docker-compose.yml
)来定义应用程序所需的所有服务、网络和卷等配置,然后通过简单的命令来启动、停止和管理整个应用栈。它非常适合在开发、测试和生产环境中使用,尤其是在需要管理多个相互依赖的容器时。
B. Docker Compose 的核心概念
服务(Services):
- 一个服务代表一个运行中的容器。Compose 文件中的每个服务定义了容器的镜像、环境变量、端口映射、卷挂载等配置。
网络(Networks):
- Compose 可以定义多个服务之间的通信网络,每个服务可以连接到一个或多个网络。默认情况下,所有服务都会连接到一个默认的网络中。
卷(Volumes):
- 卷是用于持久化数据的存储,可以在多个容器之间共享。Compose 文件中可以定义和管理这些卷。
C. Docker Compose 的安装
在大多数现代操作系统上,Docker Compose 已经作为 Docker Desktop 的一部分被自动安装。如果您使用 Linux,可以通过以下命令手动安装 Docker Compose:
|
|
您可以通过以下命令检查 Docker Compose 是否已经安装成功:
|
|
D. 如何使用 Docker Compose
D.1. 创建 docker-compose.yml
文件
这个文件定义了应用程序的所有服务、网络和卷的配置。以下是一个简单的 docker-compose.yml
文件示例:
|
|
在这个例子中:
web
服务使用nginx
镜像,暴露端口8080
,并将本地的./html
目录挂载到容器内的/usr/share/nginx/html
。db
服务使用mysql:5.7
镜像,并设置了MYSQL_ROOT_PASSWORD
环境变量,还使用一个命名卷db_data
来持久化数据库数据。- 两个服务都连接到名为
webnet
的自定义网络。
D.2. 启动服务
在包含 docker-compose.yml
文件的目录中运行以下命令以启动所有定义的服务:
|
|
此命令会拉取必要的镜像、创建并启动容器,并设置网络和卷。默认情况下,日志输出会显示在终端中。
如果希望在后台运行这些服务,可以使用 -d
选项:
|
|
D.3. 停止和删除服务
要停止所有正在运行的服务,您可以运行:
|
|
这个命令不仅会停止容器,还会删除容器、网络、卷(可选)等。
如果您希望删除数据卷,可以添加 -v
选项:
|
|
D.4. 查看服务状态
您可以使用以下命令查看当前所有服务的状态:
|
|
D.5. 查看服务日志
要查看某个服务的日志,可以使用以下命令:
|
|
例如,要查看 web
服务的日志,可以运行:
|
|
D.6. 重新启动服务
要重新启动某个服务,您可以使用以下命令:
|
|
或者重新启动所有服务:
|
|
D.7. 进入正在运行的容器
您可以使用以下命令进入正在运行的容器:
|
|
例如,要进入 web
服务的容器并打开一个 Bash 终端,可以运行:
|
|
E. 卸载操作
E.1. 散装删除的方法
E.1.1. 停止使用该镜像的容器
列出所有正在运行的容器:
|
|
列出所有容器,包括已停止的容器:
|
|
运行一个停止的容器
|
|
停止运行的容器:
|
|
删除容器:
|
|
E.1.2. 删除 Docker 镜像
一旦确认没有任何容器在使用该镜像,就可以删除该镜像。你可以使用镜像的名字或 ID 删除镜像。
使用镜像名字删除:
|
|
使用镜像 ID 删除:
|
|
如果镜像有多个 tag,可以使用 -f
强制删除:
|
|
确认镜像已删除: 再次列出所有镜像,确认镜像已成功删除。
|
|
注意:如果你在删除镜像时遇到问题,确保没有任何容器在使用该镜像。你可以通过删除所有未使用的镜像来清理系统:
|
|
E.2. 批量
|
|
删除容器时,卷和镜像一起删除