# Docker 进阶
# 参考文档
# 快速使用
mkdir myapp && cd myapp 创建项目目录,然后再创建 docker-compose.yml 配置文件,后续这个项目所有的文件都存放到项目目录下。
docker-compose.yml文件名是默认的,也可以用-f指定其他文件,如:docker compose -f my-compose.yaml up- 所有服务在同一个自定义网络中,可以直接用服务名互相通信(如 web 可直接连接 redis 主机名)
# 常用命令
docker compose up,启动所有服务(前台)docker compose up -d,后台启动docker compose down,停止并删除容器、网络等docker compose ps,查看运行中的服务docker compose logs web,查看 web 服务的日志docker compose exec web sh,进入 web 容器执行命令
# Docker Compose
# 简介
我们知道通过 Dockerfile 可以很方便的定义一个单独的容器,但是一个项目中往往会包含多个容器(项目代码、Mysql、Redis...),多个容器配合才能完成一个应用。
Compose 就是用来编排这些容器的,它允许用户通过一个单独的 docker-compose.yml 模板文件定义一组关联容器构成一个应用。Compose 中有两个重要概念:
service服务,一个应用实际的容器,也就是每一个微服务所在的容器,实际上可以包括多个运行相同镜像的容器实例。project项目,有多个服务组成的一个完整的应用项目。
Compose 默认管理的对象是项目,通过 Compose 可以使用 YML 文件来配置应用程序需要的所有服务。然后使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose v1 中的命令是 docker-compose [arg],Compose v2 中的命令是 docker compose [arg]。
从 Docker Engine v20.10 开始,Docker 官方将 Compose 作为 CLI 插件集成到 Docker 中。默认
docker compose命令在安装完 docker 就可以用。
# Compose 模板文件
详细参数解释可见文档 (opens new window)
目前主要使用到的 Compose 是 v3,所以这里默认使用 v3,其它版本可以去官方文档中查看。
Compose 默认使用文件名 docker-compose.yml。当然,也可以使用 -f 参数指定具体文件。
# 示例
定义 docker-compose.yml 放在工程根目录下,执行 docker compose up 这个命令来启动并运行整个应用程序。在工程根目录下执行 docker compose logs 将展示整个应用的日志信息,不同服务的日志将会以不同的颜色展示出来。
# docker-compose.yml 配置
version: '3'
services:
compose-demo:
build: .
ports:
- '7400:7401'
# 这里意思是先运行 redis,再运行当前服务
depends_on:
- redis
redis:
image: redis
ports:
- '6374:6379'
# service - compose-demo 的 Dockfile
FROM openjdk:8
ADD /target/compose-demo-1.0-SNAPSHOT.jar app.jar
ENTRYPOINT java -jar app.jar
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 讨论区
由于评论过多会影响页面最下方的导航,故将评论区做默认折叠处理。