趣谈 Linux 操作系统
刘超
前网易杭州研究院云计算技术部首席架构师
85459 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 72 讲
趣谈 Linux 操作系统
15
15
1.0x
00:00/00:00
登录|注册

56 | 容器:大公司为保持创新,鼓励内部创业

cgroup
namespace
cgroup
namespace
Tomcat容器镜像启动
对比虚拟机
容器运行
容器镜像
Docker Daemon
依赖内核技术
技术实现
内存限制
CPU限制
跨云迁移
弹性伸缩
持续集成
容器镜像制作
容器启动
镜像运行
Docker安装
镜像
技术支持
封闭环境
封装和标准化
隔离性
类比集装箱
灵活性
隔离作用
交流分享
课堂练习
总结
容器隔离
容器功能
容器运行
容器打包过程
容器概念
集装箱功能
容器技术
容器技术知识关系脑图

该思维导图由 AI 生成,仅供参考

上一章,我们讲了虚拟化的原理。从一台物理机虚拟化出很多的虚拟机这种方式,一定程度上实现了资源创建的灵活性。但是你同时会发现,虚拟化的方式还是非常复杂的。这有点儿像,你去成立子公司,虽然说公司小,但毕竟是一些独立的公司,麻雀虽小,五脏俱全,因而就像上一章我们看到的那样,CPU、内存、网络、硬盘全部需要虚拟化,一个都不能偷懒。
那有没有一种更加灵活的方式,既可以隔离出一部分资源,专门用于某个进程,又不需要费劲周折的虚拟化这么多的硬件呢?毕竟最终我只想跑一个程序,而不是要一整个 Linux 系统。这就像在一家大公司搞创新,如果每一个创新项目都要成立一家子公司的话,那简直太麻烦了。一般方式是在公司内部成立一个独立的组织,分配独立的资源和人力,先做一段时间的内部创业。如果真的做成功了,再成立子公司也不迟。
在 Linux 操作系统中,有一项新的技术,称为容器,它就可以做到这一点。
容器的英文叫 Container,Container 的另一个意思是“集装箱”。其实容器就像船上的不同的集装箱装着不同的货物,有一定的隔离,但是隔离性又没有那么好,仅仅做简单的封装。当然封装也带来了好处,一个是打包,二是标准。
在没有集装箱的时代,假设我们要将货物从 A 运到 B,中间要经过三个码头、换三次船。那么每次都要将货物卸下船来,弄得乱七八糟,然后还要再搬上船重新摆好。因此在没有集装箱的时候,每次换船,船员们都要在岸上待几天才能干完活。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

容器技术是一种灵活的资源隔离方式,通过namespace和cgroup实现资源隔离,同时利用镜像实现环境的标准化。Docker工具使用户能够轻松创建、运行和管理容器,实现快速部署和迁移。容器不仅可以包含操作系统环境,还可以带有应用程序,使得应用可以像集装箱一样随处运行。这种技术能够加速产品的发布和上线速度,提高开发、测试和生产环境的整体迁移效率。文章还介绍了如何使用Dockerfile创建自定义镜像,并探讨了容器的持续集成、弹性伸缩和跨云迁移等功能。此外,文章还介绍了Docker如何限制CPU和内存的使用,以及容器的隔离效果。整体而言,容器技术的灵活性和便利性使其成为现代软件开发和部署的重要工具。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(18)

  • 最新
  • 精选
  • dwjwlxs
    这个课程卖99块真是太便宜了,应该卖999😂

    作者回复: 哈哈,那就多转发,还有分享费用

    2020-04-16
    9
  • 许童童
    Docker使用宿主机的内核,通过cgroup和namespaces加上UnionFS来实现,真是的妙啊。

    作者回复: 的确妙

    2019-08-05
    8
  • 饭粒
    终于来一节不是那么深且比较熟悉的。弹性伸缩上 k8s 更好,顺带安利下张磊老师的 k8s 专栏,也是很不错的一个专栏。示例 dockerfile 的几行 RUN 命令好像用 && 或 ;弄成一句更好,这样镜像的 UFS 可以少几层。

    作者回复: 对的,看来您对容器很熟悉,这里仅仅展示原理

    2019-08-15
    7
  • 卡斯瓦德
    貌似docker还有device-mapper技术吧,关于物理存储分配,这里会细讲吗?

    作者回复: 对的,不会讲这个了,内容太多,收不住了

    2019-08-08
    1
  • LiYanbin
    docker run -d 中 官方文档的解释 是detach的short command, https://docs.docker.com/engine/reference/run/#detached--d

    作者回复: 赞

    2020-05-07
  • 大雄
    大侠好,请问下 按照架构图,docker中没有OS这么一部分的么,但是为何任意的基础镜像中都有linux,还有就是docker是如何和系统共享内核的呀。

    作者回复: 调用底层都是通过统一的系统调用

    2019-08-28
  • 小桌子
    我一直想不通有了容器化之后,是不是可以完全替代虚拟化,他们的场景好像重叠,并且docker更有优势啊,虚拟化还有未来吗?
    2020-02-12
    1
    5
  • 罗辑思维
    注:以下在ubuntu 18.04.4 LTS docke-ce:19.03.6操作成功 1. docker pull tomcat #下载tomcat镜像 2. docker run -d -p 20000:8080 tomcat #运行tomcat镜像, 「-d 」是以后台方式运行;「-p 20000:8080」:20000是宿主机端口号,可以自定义;8080是tomcat服务端口号,默认是8080 如果用浏览访问宿主机IP,出现网页404,那么执行如下步骤3 3. docker exec -it 3cae48db60ee /bin/bash #3cae48db60ee是container id,用docker ps命令查询 下面进到「tomcat container」操作 root@3cae48db60ee:/usr/local/tomcat# rm -rf webapps root@3cae48db60ee:/usr/local/tomcat# mv webapps.dist webapps
    2020-02-23
    1
    3
  • GeekCoder
    docker中没有包含os部分,底层系统调用都是调用主机的,那比如我在linux最新版本制作了的一个镜像,用到了最新的系统调用A,而在旧版本LINUX中没有这个系统调用A,那么这个镜像可以在旧版本中可以运行吗?
    2021-10-21
    1
    2
  • 潘政宇
    集装箱,20世纪最伟大的发明之一!!!
    2019-09-04
    1
收起评论
显示
设置
留言
18
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部