Docker Compose 的理解与多场景应用
前言
上一期我们简单介绍了 Dockerfile 及对应使用方法,本地项目打包成镜像并上传到 docker 仓库。那么本期继续对 Docker 进行深入,了解 Docker Compose 多容器编排的处理。
本文使用的为 docker compose v2,版本为 v2.28.1,v1 已经停止维护了
Docker Compose 简单认识
Docker Compose 用于定义和运行多容器 Docker 应用的工具,通过一个 docker-compose.yml
文件来配置应用服务,简化了多容器环境的管理。很多复杂的项目往往需要各种各样的中间件,在以前我们需要手动一个一个配置,而现在,我们只需要执行别人写好的 docker-compose 文件即可完成各种组件和环境的引入。
安装 Docker Compose
mac&windows
mac 与 windows 的 Docker Compose
包含在 Docker 桌面端,直接安装桌面端 Docker 即可。
linux
执行下面命令将 Docker 安装在 /usr/local/bin
目录下,其中版本号是可以自由变更的,这里我用的最新的版本,当然你可以去对应的 GitHub 地址更换为自己想要的版本 DockerCompose 发布地址
命令解析:
curl
:调用命令行工具 curl
-L
:如果请求的资源被重定向到另一个 URL,curl
将自动跟随重定向
-o /usr/local/bin/docker-compose
:将下载的文件保存到 /usr/local/bin/
目录,并命名为 docker-compose
1 | sudo curl -L "https://github.com/docker/compose/releases/download/v2.28.1/docker-compose-linux-amd64" -o /usr/local/bin/docker-compose |
添加对应的执行权限
1 | sudo chmod +x /usr/local/bin/docker-compose |
验证安装版本
1 | docker compose version |
Docker Compose 常用命令
docker compose up:
启动并运行 Docker Compose 定义的所有服务
docker compose down:
停止并删除运行中的容器、网络、镜像和卷
docker compose start:
启动已停止的服务容器
docker compose stop:
停止运行中的服务容器
docker compose restart:
重启服务容器
docker compose ps:
列出与当前项目关联的所有容器
docker compose logs:
查看服务的输出日志
docker compose -p mycompose logs nacos:在名为 mycompose 的容器组中,查看 nacos 服务的日志。
docker compose config:
验证和查看 Compose 文件的配置
docker compose exec:
在运行的容器中执行命令
docker compose -p mycompose exec db bash:在名为 mycompose 的容器组中,进入 db 服务容器内。
docker compose version:
查看当前版本
Docker Compose 示例(本地项目与已有网络)
下面是一个简单的配置示例,注意,Docker compose 的 yml 文件名必须为 docker-compose.yml
!这个因为用的是我本地的项目,所以参考一下即可,第二个示例可以实际运行。
下面对其中部分进行更细致的关系解释:
- 配置文件中的服务名是可以自定义的,如 web、db、redis 等
- 如果想将我们自己的项目加入到 docker compose,有 2 种方法,第一种是直接使用 build 命令,其中 context 是上下文路径,会在构建 web 服务时,将该路径作为构建时的工作目录,同时 dockerfile 需要设置为对应的 dockerfile 位置及名字(这里我没写 Dockerfile 的路径原因是默认会在上下文中找)。第二种是提前将自己的项目上传到 Docker 仓库,使用镜像来创建,在第二个示例会展示这种方法。
- depends_on 为依赖其他服务,例如 web 依赖于 db 和 redis,那么在 db 和 redis 启动后,web 才会启动
- 服务中 volumes 所挂载的卷,如果为名字的话,并且在 volumes 有定义(倒数第八行),那么有 Docker 自动创建并管理。通过下面 2 个命令来查看具体信息:
docker volume ls, docker volume inspect '${name}'
- 网络可以在 yml 中定义一个新的直接使用,也可以使用已有的网络。第一个例子是使用已有网络,第二个示例则是创建一个新的网络
1 | version: '3.8' # 指定使用的Docker Compose版本 |
Docker Compose 示例(自有镜像与新建网络)
这个示例我使用我自己的仓库,同时,网络使用的是内部网络。
使用 docker compose -p mydocker up -d
来启动该容器组并命名为 mydocker
,这里命名不可以包含大写!
1 | version: '3.8' |
启动成功后,可以自己尝试连接 MySQL 与 Redis,端口号分别为 3310 和 6333。web 服务则可以通过 127.0.0.1:1234/ai/A
来访问验证。
结束语
以上就是 Docker Compose
的认识与部署,现在越来越多的项目使用 Docker Compose 部署,如果掌握了这种方法,对于部署的我们来说也是越来越简单。希望通过本文,可以帮助大家更好的理解 Docker Compose~