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

03|容器化的应用:会了这些你就是Docker高手

你好,我是 Chrono。
在上一次课里,我们了解了容器技术中最核心的概念:容器,知道它就是一个系统中被隔离的特殊环境,进程可以在其中不受干扰地运行。我们也可以把这段描述再简化一点:容器就是被隔离的进程
相比笨重的虚拟机,容器有许多优点,那我们应该如何创建并运行容器呢?是要用 Linux 内核里的 namespace、cgroup、chroot 三件套吗?
当然不会,那样的方式实在是太原始了,所以今天,我们就以 Docker 为例,来看看什么是容器化的应用,怎么来操纵容器化的应用。

什么是容器化的应用

之前我们运行容器的时候,显然不是从零开始的,而是要先拉取一个“镜像”(image),再从这个“镜像”来启动容器,像第一节课这样:
docker pull busybox
docker run busybox echo hello world
那么,这个“镜像”到底是什么东西呢?它又和“容器”有什么关系呢?
其实我们在其他场合中也曾经见到过“镜像”这个词,比如最常见的光盘镜像,重装电脑时使用的硬盘镜像,还有虚拟机系统镜像。这些“镜像”都有一些相同点:只读,不允许修改,以标准格式存储了一系列的文件,然后在需要的时候再从中提取出数据运行起来。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Docker技术是一种容器化应用的技术,通过使用镜像和容器的概念,实现了应用程序的封装和跨平台运行。镜像是静态的应用容器,包含了应用程序所需的完整运行环境,而容器则是动态的应用镜像,通过容器环境运行应用程序。这种技术使得开发者能够实现“一次编写,到处运行”的目标。在Docker中,常用的容器操作包括拉取镜像、列出本地镜像和删除镜像等。通过这些操作,开发者可以方便地管理和使用镜像,实现应用程序的容器化部署和运行。 Docker技术的核心处理对象是镜像和容器,通过理解和掌握这些概念,开发者可以成为Docker高手,实现容器化应用的创建和操纵。文章还介绍了常用的容器操作,包括`docker run`、`docker exec`、`docker stop`、`docker rm`等命令,以及如何使用这些命令来管理和操作容器。文章最后提出了两个思考题,引导读者深入思考和讨论相关技术问题。整体而言,本文通过实际操作和思考题的方式,帮助读者快速了解Docker技术的基本概念和操作方法。

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

全部留言(47)

  • 最新
  • 精选
  • 星垂平野阔
    作业1: 容器镜像比起这些安装包的差别就在于通用,不同linux版本下的安装包还不同。 作业2: run是针对容器本身启动,而exec是进入了容器内部去跑命令,相当于进去操作系统跑应用。

    作者回复: great

    2022-06-27
    26
  • lesserror
    老师后面的课程是会用k8s带领我们模拟真实场景,部署应用吗? 「纸上得来终觉浅」。

    作者回复: 会部署WordPress应用,但要是真实场景就不太好找了。

    2022-06-27
    8
  • sky
    还有一些命令docker save,docker load,docker stats,docker cp也很有用

    作者回复: save、load、cp等命令后面会讲,docker命令太多了,全讲不现实,得尽快进入Kubernetes。

    2022-07-09
    7
  • 拾掇拾掇
    我实操了下,nginx:alpine 和 nginx:1.21-alpine image_id是不一样的,我猜是被更新了导致image_id不一样了,因为created也不一样

    作者回复: 是的。nginx:alpine始终是最新版本的Nginx,现在是1.23了,我当时是一样的。 你可以试试nginx:alpine和nginx:1.23-alpine 。

    2022-06-27
    3
    7
  • Bill
    1.容器镜像通过分层打包,安装所有依赖包,并可以在主机上共享使用,减少存储空间需求,它与 rpm、deb 安装包作为某一个功能的所有依赖包安装,聚焦某个命令的上下文,容器是整个应用的打包。 2.docker run利用镜像运行容器,拥有丰富的启动参数,如挂载volume,端口映射等。是容器运行启动的基础。docker exec启动session,在一个已运行的容器中执行命令,仅当PID 1进程存在时运行,容器重启后,session将失效。

    作者回复: great

    2022-06-27
    4
    7
  • 忧天小鸡
    苦于没有docker入门,耗费大量时间,这教程真是太creat了。 大佬的课我全入了,对你的讲述感觉十分易懂,不需要绕弯理解,nice的。 等我cpp入门,去试试你们公司

    作者回复: great,努力学习进步吧。

    2022-06-27
    6
  • lesserror
    1. 课外贴士的第四条,有同学问了,怎么删除,老师的回答我没太明白,最佳实践是如何操作呢? 2. 想听听老师的回答:docker run 和 docker exec 的区别在哪里?

    作者回复: 1. 用rmi删除镜像,不用image id,而是用名字加标签,当其他的名字加标签的引用都没有的时候就可以直接删除了。 2.这个删除镜像没有什么最佳实践,这个其实是docker防止误删除的一个保险。 3.简单来说,docker run是用命令启动一个容器,而docker exec是在已有容器里执行命令

    2022-06-27
    4
  • Amosヾ
    老师,课外贴士中的第4条如何删除呢?有时候强制删除也没用

    作者回复: 把多余的tag依次删除,最后就可以直接删除镜像了。

    2022-06-27
    2
    4
  • 朱雯
    老师好,想问一个问题,那就是k8s的container和docker容器有什么区别吗,我使用dockerfile打包一个镜像,在docker环境中是可以打包成功,但是放到使用k8s的jenkins流水线上,就无法打包成功,云平台相关工程师告诉我可能是k8s和docker的不兼容导致的,想请问一下这个问题

    作者回复: 镜像都用的是OCI标准,不存在兼容问题,应该从其他方面找原因。

    2022-06-27
    3
  • 小伙儿
    docker镜像和rpm包的区别 镜像在打包推送到仓库后不管在那个操作系统中都能运行,而rpm包不行 docker镜像中包含了完整的应用依赖和系统环境,而rpm包则没有 镜像比较能节约磁盘空间,如果镜像的部分层已经在本地中有了,就可以直接复用,rpm包不行 docker的run和exec的区别 run是从镜像创建运行一个容器的必备命令,exec则是在已经运行的容器中执行另外一个程序,他们的优先级是先run后exec。

    作者回复: great

    2022-08-16归属地:北京
    2
收起评论
显示
设置
留言
47
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部