最近搭建了基于 sentry 私有化的前端错误监控系统,其中 docker-compose 是在我们自己服务器上安装部署 sentry 服务及日常运维的关键。以前只使用过 docker,这块基本属于知识盲区得立马学习起来!
Compose
是 Docker 官方的开源项目,它通过一个的 docker-compose.yml
模板文件来实现对 Docker 容器集群(多容器)的快速编排。
说通俗点,它其实就是 「定义和运行多个 Docker 容器的应用」
。
为什么需要 docker-compose?
经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡(nginx等)容器等。
这么多 docker 容器,管理起来光先后依赖关系和一个个启动、关闭等操作就非常麻烦了。如果你做的是像 sentry 这种开源应用(其容器列表如下),那别人使用你项目时就要维护这么多容器会非常麻烦。
如果有一个类似配置文件一样的东西把这些依赖关系和启动关闭这些操作打包一起做,那就非常酷了!而 docker-compose 刚做的就是你所期待的这种事。
常用命令
Compose
中有两个重要的概念:
- 服务 (
service
):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 - 项目 (
project
):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml
文件中定义。【默认管理对象】
模板文件是使用 Compose
的核心,因此 docker-compose 的启动和停止都需要 docker-compose.yml
文件,且需要在它所在的目录执行命令。
常用命令:
- 后台运行:
docker-compose up -d
- 前台运行:
docker-compose up
- 停止:
docker-compose down
- 重新启动:
docker-compose restart
- 查看当前 compose 所有在运行的容器:
docker-compose ps
- 查看某个 docker 容器服务的日志:
docker-compose logs --tail 10 [服务名称]
操作实践
考虑到 sentry 项目安装起来不容易,且容器服务庞大。当时在网上找了个 compose 的演示项目实践了下:docs.docker.com/compose/get… 。
可以根据文档步骤,动手一步步熟悉下 docker-compose
的操作。
clone 项目到文件夹后,我们先进入到 docker-compose.yml
文件所在的目录。这时候我们用 docker ps
命令查看,此时是没有任何容器启动的:
使用 docker compose up
启动 compose 容器组后控制台会显示启动日志:
这时候再查看已启动的 docker 容器,发现已经有很多容器在运行中了:
当然,验证 docker 服务归验证。比较好的方式,还是使用 docker-compose ps
这种推荐的方式来查看该容器组正在运行的容器列表:
两个命令查看打印出来的信息有什么区别?这点区别到底重不重要?
对 docker 有使用经验的,或者观察力比较尖锐的可以在评论区告诉我 :)
最后
本文属于科普类的入门引导,受限于作者使用经验所以没有讲得特别深入。
有其他想要深入了解的,可以参考官方文档:yeasy.gitbook.io/docker_prac…