Kubernetes 入门实战课
罗剑锋
Kong 高级工程师,Nginx/OpenResty 开源项目贡献者
19527 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 41 讲
Kubernetes 入门实战课
15
15
1.0x
00:00/00:00
登录|注册

加餐|docker-compose:单机环境下的容器编排工具

你好,我是 Chrono。
我们的课程学到了这里,你已经对 Kubernetes 有相当程度的了解了吧。
作为云原生时代的操作系统,Kubernetes 源自 Docker 又超越了 Docker,依靠着它的 master/node 架构,掌控成百上千台的计算节点,然后使用 YAML 语言定义各种 API 对象来编排调度容器,实现了对现代应用的管理。
不过,你有没有觉得,在 Docker 和 Kubernetes 之间,是否还缺了一点什么东西呢?
Kubernetes 的确是非常强大的容器编排平台,但强大的功能也伴随着复杂度和成本的提升,不说那几十个用途各异的 API 对象,单单说把 Kubernetes 运行起来搭建一个小型的集群,就需要耗费不少精力。但是,有的时候,我们只是想快速启动一组容器来执行简单的开发、测试工作,并不想承担 Kubernetes 里 apiserver、scheduler、etcd 这些组件的运行成本。
显然,在这种简易任务的应用场景里,Kubernetes 就显得有些“笨重”了。即使是“玩具”性质的 minikube、kind,对电脑也有比较高的要求,会“吃”掉不少的计算资源,属于“大材小用”。
那到底有没有这样的工具,既像 Docker 一样轻巧易用,又像 Kubernetes 一样具备容器编排能力呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Docker-compose是一个轻量级的容器编排工具,填补了Docker和Kubernetes之间的空白位置。它使用YAML来定义容器的启动参数、先后顺序和依赖关系,让用户不再有Docker冗长命令行的烦恼,第一次见识到了“声明式”的威力。相比于Kubernetes,docker-compose的学习难度较低,上手容易,很多概念都是与Docker命令一一对应的。docker-compose的核心概念是“service”,它与Kubernetes里的 `Service` 虽然名字很像,但却是完全不同的东西。docker-compose在单机环境里能够快速启动一组容器来执行简单的开发、测试工作,同时避免了Kubernetes的复杂性和成本,是一个轻量级且适合不同场景下使用的容器编排工具。文章通过一个私有镜像仓库Registry的YAML文件示例,展示了docker-compose的使用方法,包括安装、编写YAML文件、管理容器、启动应用、停止应用等操作。此外,文章还通过搭建WordPress网站的实例深入演示了docker-compose的使用,展示了它的便利之处,如定义容器的依赖关系、网络标识等。尽管docker-compose在功能上有一定的局限性,但它在简单应用场景下的便捷性和实用性使其成为一个有用的工具。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kubernetes 入门实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • Bachue Zhou
    相比于 kubernetes,docker-compose 不就是大道至简吗?

    作者回复: 能力太弱,怎么管理成百上千的集群?

    2022-11-18归属地:北京
    4
  • 青储
    这个可以用在小型公司生产线上吗?

    作者回复: 当然可以,它其实就是对docker的一个易用性包装。

    2022-08-15归属地:北京
    4
  • onemao
    docker compose对开发来说最大的作用就是本地快速拥有数据库,消息中间件等等,无需单独安装,随时用随时删除。而且只要写好文件放到repo,idea中点一下可以一键运行和初始化,也极大方便本地开发与本地集成测试。

    作者回复: 是的,对于开发测试来说非常方便,可以说是必备的。

    2022-08-26归属地:北京
    3
  • docker-compose 的默认配置文件名称为: docker-compose.yml -f, --file FILE Specify an alternate compose file (default: docker-compose.yml) 2.

    作者回复: 1.x docker-comose的默认文件是docker-compose.yml,2.x后默认文件也可以使用compose.yml。

    2022-08-18归属地:北京
    2
  • peter
    请教老师几个问题: Q1:docker-compose只能用在单机环境,不能用在集群吗? Q2:文中创建的第一个docker是干什么用的? 文中用了这个命令“docker run -d -p 5000:5000 registry”,请问创建这个有什么用? 是不是这样:用“docker run -d -p 5000:5000 registry”可以启动一个容器。用yaml文件,用“docker-compose -f reg-compose.yml up -d”,也可以达到同样的目的。 Q3:需要先搭建一个本地registry吗? 执行“docker push 127.0.0.1:5000/nginx:v1”后报错: The push refers to repository [127.0.0.1:5000/nginx] Get "http://127.0.0.1:5000/v2/": dial tcp 127.0.0.1:5000: connect: connection refused 突然感觉Q2中创建的应用就是本地registry,对吗?

    作者回复: 1.docker-compose和docker一样,只能是单机运行,就是对docker的包装。 2.第一个docker命令是和docker-compose对比用的。 3.是的,就是先用docker-compose运行了一个Registry,然后测试验证docker push。

    2022-08-16归属地:北京
    2
  • Max
    docker-compose转写成k8s yaml有什么建议吗? 尝试使用了kompose convert工具,发现还是有很多配置无法覆盖到,比如env的引入方式就不一样。

    作者回复: 毕竟两者的理念差距太大,虽然都是YAML ,但也不是能够一一对应的,需要正确理解后改成kubernetes的格式。

    2023-03-08归属地:内蒙古
    2
    1
  • Demon.Lee
    原来 docker-compose 从 v1.27 版本开始将 version 字段给“干掉”了,再也不用理会 version: "3",version: "3.9",version: "2" 了 😂 。 为啥我之前没觉得这玩意有点反人类呢?嗯,缺少批判性思维。

    作者回复: 其实我觉得加version也算是个合理的决定,但后来可能是觉得带来的麻烦更多,就给去掉了。

    2022-12-01归属地:上海
    1
  • YueShi
    apt install docker-compose 为docker-compose version 1.29.2, build unknown 不是最新版的

    作者回复: 从GitHub项目里直接下载二进制文件。

    2022-08-15归属地:北京
    1
  • Sports
    如果安装成docker compose plugin的形式,即没有中间的横线,harbor安装会有问题,因为检测不到docke-compose😂

    作者回复: 所以一般还是用传统的docker-compose的形式,和1.x兼容。

    2022-08-15归属地:北京
    2
    1
  • 我说怎么安装docker-compose教程差异那么大 有的要下载python 有的直接下来个可执行文件

    作者回复: 现在应该都用Go版本的。

    2024-03-10归属地:河北
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部