2024-05-11

Docker

docker是什么?

Docker 是一个开源的平台,可以通过 Docker 进行开发、部署和运行应用程序。Docker 将应用程序和底层基础设施进行分离,实现更快的交付。通过 Docker 技术,可以像管应用一样管理项目的基础设施,比如基础依赖等,这里的具体技术其实就是镜像。通过 Docker 技术,可以精简的整个开发和交互的流程。

平台(platform)

官方将 Docker 定义为一个平台,但是其实更准确的来说,Docker 其实是一个技术栈,包括 Docker 镜像,可以类比为程序,是磁盘上面的静态文件,可以通过 Docker 来启动运行;Docker 容器,也就是 Docker 镜像的运行时实例;Docker Daemon,用来管理机器上的镜像、容器等。

应用程序和底层基础设施分离

传统的软件开发模式是我们先开发好我们的应用,然后在线上环境或者测试环境上先安装应用的基础依赖,比如像一些 C++ 的二进制文件会依赖一些操作系统的动态链接库。

依赖安装完成之后,然后将应用程序部署上去。使用 Docker 的镜像技术我们可以将这些依赖和应用程序都打包到镜像中,然后测试或者正式上线的时候只需要将整个镜像部署上去就可以了,不需要关心目标服务器上面的基础环境,这也就是应用程序和基础设施分离。也是精简开发流程的核心的所在。

Docker、虚拟机

Docker 和虚拟机的主要区别有:
  • 所有的 Docker 应用共享一个宿主机操作系统,每个虚拟机有自己的操作系统
  • 每个Docker 应用通过 Docker 层和宿主机的操作系统交互,而虚拟机应用直接和操作系统交互。
  • 实际上Docker 并不会像虚拟机那样对应用进程的隔离环境负责,也不会创建任何实体的容器,真正对环境负责的是宿主机操作系统本身。

Docker 的应用场景

应用交付

使用 Docker 镜像,可以将所有的环境依赖都打包到镜像中,然后通过镜像来传输,这样会更加地高效。

  • 开发者在本地编写代码进行开发,然后通过 Docker 镜像和其他协作者共享
  • 使用 Docker 技术将应用 push 到测试环境,自动触发自动化 test case
  • 当开发者发现应用程序的 bug 时,可以在本地开发环境进行修复。修复完之后再将应用重新部署到测试环境进行测试验证
  • 当测试完成之后,需要给客户的环境升级,只要把修复完的应用镜像推送到客户可以访问的镜像中心即可
多版本混合部署

随着产品的不断更新换代,一台服务器上部署同一个应用的多个版本在企业内部非常常见。但一台服务器上部署同一个软件的多个版本,文件路径、端口等资源往往会发生冲突,造成多个版本无法共存的问题。

使用 docker,这个问题将非常简单。由于每个容器都有自己独立的文件系统,所以根本不存在文件路径冲突的问题;对于端口冲突问题,只需要在启动容器时指定不同的端口映射即可解决问题。

内部开发测试环境

传统的开发测试环境都是由运维人员进行专门的环境配置而搭建出来的,而且需要运维人员进行专门维护。环境一旦出现问题,恢复起来也很麻烦。

借助于 Docker 技术,将应用程序需要的依赖都固化到 Docker 镜像中,然后在对应的 Docker 容器中进行开发测试。就算环境出现问题,只要将当前容器删除重新启动即可恢复。

使用 Docker 镜像来维护内部开发测试环境还有另一个好处就是 DevOps,传统的应用开发部署要跨两个团队:开发团队负责开发,运维团队服务部署,一旦涉及到跨团队合作就要牵扯到沟通成本。而且开发作为应用的 owner,实际上对其依赖环境会更加的熟悉才对。

通过 Docker 镜像技术,开发人员在开发应用的过程中就将这些依赖固化到镜像中。在环境部署环节,即使需要运维人员参与,也只是负责拉起 Docker。整个过程都会更加的高效。

Docker 架构浅析

Docker 的架构比较复杂,并不是纯粹的只有 Server 和 Client。

几个主要的组成部分有:
  • Docker Client

    • 安装完 Docker 包之后,直接使用敲命令:docker ,界面是有提示的,这个 docker 就是 docker client。

    • docker client 都是用来和 docker daemon 交互的。

  • Docker Daemon

    • docker daemon 是一个 docker 后台运行的守护进程,我们的 docker client 的命令就是和 Docker Daemon 来进行交互的。

    • Docker daemon 启动可以使用 service 或者 systemctl 操作.

      # 启动服务
      service docker start
      # 或者
      systemctl start docker.service
      

      然后我们使用 ps 命令就能看到 docker daemon 进程了。

      ps aux | grep dockerd
      

      然后查看和 client 交互的 socket 文件也存在了。

      ll /var/run/docker.sock
      
  • Docker Registry

    Registry 中文一般翻译为注册中心,是用来存储 Docker 镜像的地方。Docker Registry 有多种不同的表现,比如 Docker Hub 就是一个公开的注册中心,同时各大云厂商也提供了自己的注册中心,比如阿里云、腾讯云等,甚至你可以搭建自己的私有注册中心。

    Docker 默认使用 Docker Hub,比如执行 docker pull <image-name> 时,Docker 默认去 Docker Hub 中寻找名字为 image-name 的镜像。如果使用自己的 Registry 需要进行单独的配置。

  • Docker Images

    image 一般中文称之为镜像。官方对镜像的定义比较复杂,我一般使用类比的方式来理解镜像。镜像可以理解成计算机系统中的程序,也就是静态的位于磁盘上面可以通过特定方式执行的文件(程序是操作系统可以识别的特定的二进制文件,Docker 镜像是可以被 Docker Daemon 识别并执行的特定文件)。

    镜像和普通的可执行文件的区别在于镜像是分层架构,每个镜像一般都依赖于一个基础镜像。最基本的镜像叫 scratch 镜像。当然我们也可以构建自己的镜像,然后发布到镜像中心别人就也可以使用了。

  • Docker Container

    • 容器是镜像的运行实例。

    • 这个定义和进程的定义非常类似:进程是程序的运行实例。可以将镜像类比为程序,容器类比为进程。

    • 容器默认是和其他容器以及其宿主机隔离开的。具体的隔离策略可以进行自定义设置。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,264评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,549评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,389评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,616评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,461评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,351评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,776评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,414评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,722评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,760评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,537评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,381评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,787评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,030评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,304评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,734评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,943评论 2 336

推荐阅读更多精彩内容

  • 百团大战,到底对于整个国家,当然是积极向上的,这场胜利坚定了中国人民争取抗战胜利的信心和决心。 而对于我党呢...
    Milan1899_Italy阅读 30评论 0 0
  • 桥梁断丝监测 在长期使用过程中,桥梁缆索受大载荷、环境腐蚀、应力腐蚀、腐蚀疲劳、氢脆等影响,容易发生骤然断裂事故。...
    清诚声发射阅读 84评论 0 1
  • 一、docker介绍 docker的优势 1、更高效的利用系统资源由于容器不需要进行硬件虚拟以及运行完整操作系统等...
    Mr_Du_Biao阅读 656评论 0 0
  • 环境专业:农村孩子就业的真实写照 环保行业20多年工作经验,高级工程师,职业咨询,绿色认证咨询 不管你是清华还是北...
    花阡陌2022阅读 32评论 0 0
  • 志愿服务进社区美化环境 东北区:郝晓利 李秀珍报道 春暖花开,春意盎然。幸福社区街边的花都开了,树...
    0f8dcf991487阅读 77评论 0 0