当前位置:首页 > 经验 >

docker容器含义(docker容器开发是啥)

来源:原点资讯(www.yd166.com)时间:2022-11-09 07:59:29作者:YD166手机阅读>>

在容器技术没有出来之前,开发运维在进行交付的时候经常出现,开发环境执行正常,生产环境部署运行出现问题,很多原因就是因为环境导致。还有部署环境太过于复杂,交付成本太高。容器技术的出现就像工业的集装箱技术,大大提高了交付效率。

一、容器核心技术

一谈到容器,我们都会想到 Docker。

Docker 现在几乎是容器的代名词。确实,是 Docker 将容器技术发扬光大。同时,我们也需要知道围绕 Docker 还有一个生态系统。Docker 是这个生态系统的基石,但完善的生态系统才是保障 Docker 以及容器技术能够真正健康发展的决定因素。

1、容器规范

容器不光是 Docker,还有其他容器,比如 CoreOS 的 rkt。为了保证容器生态的健康发展,保证不同容器之间能够兼容,包含 Docker、CoreOS、Google在内的若干公司共同成立了一个叫 Open Container Initiative(OCI) 的组织,其目是制定开放的容器规范。

2、容器 runtime

runtime 是容器真正运行的地方。runtime 需要跟操作系统 kernel 紧密协作,为容器提供运行环境。

lxc、runc 和 rkt 是目前主流的三种容器 runtime。

lxc 是 Linux 上老牌的容器 runtime。Docker 最初也是用 lxc 作为 runtime。

runc 是 Docker 自己开发的容器 runtime,符合 oci 规范,也是现在 Docker 的默认 runtime。

rkt 是 CoreOS 开发的容器 runtime,符合 oci 规范,因而能够运行 Docker 的容器。

3、容器管理工具

光有 runtime 还不够,用户得有工具来管理容器啊。容器管理工具对内与 runtime 交互,对外为用户提供 interface,比如 CLI。这就好比除了 JVM,还得提供 java 命令让用户能够启停应用不是。

lxd 是 lxc 对应的管理工具。

runc 的管理工具是 docker engine。docker engine 包含后台 deamon 和 cli 两个部分。我们通常提到 Docker,一般就是指的 docker engine。

rkt 的管理工具是 rkt cli。

4、容器定义工具

容器定义工具允许用户定义容器的内容和属性,这样容器就能够被保存,共享和重建。

docker image 是 docker 容器的模板,runtime 依据 docker image 创建容器。

dockerfile 是包含若干命令的文本文件,可以通过这些命令创建出 docker image。

ACI (App Container Image) 与 docker image 类似,只不过它是由 CoreOS 开发的 rkt 容器的 image 格式。

5、Registry

容器是通过 image 创建的,需要有一个仓库来统一存放 image,这个仓库就叫做 Registry。

Docker Hub(https://hub.docker.com) 是 Docker 为公众提供的托管 Registry,上面有很多现成的 image,为 Docker 用户提供了极大的便利。

Quay.io(https://quay.io/)是另一个公共托管 Registry,提供与 Docker Hub 类似的服务。

6、容器 OS

由于有容器 runtime,几乎所有的 Linux、MAC OS 和 Windows 都可以运行容器。但这不并没有妨碍容器 OS 的问世。

容器 OS 是专门运行容器的操作系统。与常规 OS 相比,容器 OS 通常体积更小,启动更快。因为是为容器定制的 OS,通常它们运行容器的效率会更高。

目前已经存在不少容器 OS,CoreOS、atomic 和 ubuntu core 是其中的杰出代表。

二、说说容器

1、什么是容器

容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。

Containers vs. virtual machines

容器在 Host 操作系统的用户空间中运行,与操作系统的其他进程隔离。这一点显著区别于的虚拟机。

传统的虚拟化技术,比如 VMWare, KVM, Xen,目标是创建完整的虚拟机。为了运行应用,除了部署应用本身及其依赖(通常几十 MB),还得安装整个操作系统(几 GB)。

docker容器含义,docker容器开发是啥(1)

虚拟机和容器的区别

由于所有的容器共享同一个 Host OS,这使得容器在体积上要比虚拟机小很多。另外,启动容器不需要启动整个操作系统,所以容器部署和启动速度更快,开销更小,也更容易迁移。

2、为什么使用容器

如今的系统在架构上较十年前已经变得非常复杂了。以前几乎所有的应用都采用三层架构(Presentation/Application/Data),系统部署到有限的几台物理服务器上(Web Server/Application Server/Database Server)。

而今天,开发人员通常使用多种服务(比如 MQ,Cache,DB)构建和组装应用,而且应用很可能会部署到不同的环境,比如虚拟服务器,私有云和公有云。

一方面应用包含多种服务,这些服务有自己所依赖的库和软件包;另一方面存在多种部署环境,服务在运行时可能需要动态迁移到不同的环境中。这就产生了一个问题:

如何让每种服务能够在所有的部署环境中顺利运行?

聪明的技术人员从传统的运输行业找到了答案。

几十年前,运输业面临着类似的问题。

每一次运输,货主与承运方都会担心因货物类型的不同而导致损失,比如几个铁桶错误地压在了一堆香蕉上。另一方面,运输过程中需要使用不同的交通工具也让整个过程痛苦不堪:货物先装上车运到码头,卸货,然后装上船,到岸后又卸下船,再装上火车,到达目的地,最后卸货。一半以上的时间花费在装、卸货上,而且搬上搬下还容易损坏货物。

幸运的是,集装箱的发明解决这个难题。

打一个比方,集装箱(容器)对于远洋运输(应用运行)来说十分重要。集装箱(容器)能保护货物(应用),让其不会相互碰撞(应用冲突)而损坏,也能保障当一些危险货物发生规模不大的爆炸(应用崩溃)时不会波及其它货物(应用)但是把货物(应用)装载在集装箱(容器)中并不是一件简单的事情。而出色的码头工人(Docker)的出现解决了这一问题。它(Docker)使得货物装载到集装箱(容器)这一过程变得轻而易举。对于远洋运输(应用运行)而言,用多艘小货轮(虚拟机)代替原来的大货轮(实体机)也能保证货物(应用)彼此之间的安全,但是和集装箱(容器)比,成本过高,但适合运输某些重要货物(应用)。

任何货物,无论钢琴还是保时捷,都被放到各自的集装箱中。集装箱在整个运输过程中都是密封的,只有到达最终目的地才被打开。标准集装箱可以被高效地装卸、重叠和长途运输。现代化的起重机可以自动在卡车、轮船和火车之间移动集装箱。集装箱被誉为运输业与世界贸易最重要的发明。

Docker 将集装箱思想运用到软件打包上,为代码提供了一个基于容器的标准化运输系统。Docker 可以将任何应用及其依赖打包成一个轻量级、可移植、自包含的容器。容器可以运行在几乎所有的操作系统上。

其实,“集装箱” 和 “容器” 对应的英文单词都是 “Container”。

“容器” 是国内约定俗成的叫法,可能是因为容器比集装箱更抽象,更适合软件领域的原故吧。

3、容器的优势

对于开发人员

容器意味着环境隔离和可重复性。开发人员只需为应用创建一次运行环境,然后打包成容器便可在其他机器上运行。另外,容器环境与所在的 Host 环境是隔离的,就像虚拟机一样,但更快更简单。

对于运维人员

只需要配置好标准的 runtime 环境,服务器就可以运行任何容器。这使得运维人员的工作变得更高效,一致和可重复。容器消除了开发、测试、生产环境的不一致性。

作者:老顾聊技术,如侵删。

栏目热文

docker容器和镜像什么意思(docker镜像和容器怎么用)

docker容器和镜像什么意思(docker镜像和容器怎么用)

技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!作为云计算的当红明...

2022-11-09 07:57:05查看全文 >>

容器docker怎么理解(docker容器技术的理解)

容器docker怎么理解(docker容器技术的理解)

作者 | 乐章来源 | cnblogs.com/zhangxingeng/p/11236968.html一、简介1、了解...

2022-11-09 08:09:17查看全文 >>

docker容器是解决什么的(docker容器缺点)

docker容器是解决什么的(docker容器缺点)

现代软件开发的目标之一是应用程序既能运行在同一主机或集群上,又能彼此隔离,这样它们就不会过度干扰彼此的操作或维护,但由于...

2022-11-09 08:01:54查看全文 >>

docker容器基本概念(docker容器技术基本知识点)

docker容器基本概念(docker容器技术基本知识点)

自学了几天DDocker,就干脆总结一下,也顺带增加一篇《30分钟入门系列》。网上能够查到的对于Docker的定义我就不...

2022-11-09 07:58:30查看全文 >>

容器docker缺点(docker容器云缺点)

容器docker缺点(docker容器云缺点)

在实际的软件开发过程中,我们需要多的环境:如开发环境、测试环境、沙箱环境、自动化环境、预发环境、生产环境……这么多的环境...

2022-11-09 07:28:34查看全文 >>

docker容器干嘛用(docker容器使用缺点)

docker容器干嘛用(docker容器使用缺点)

Java识堂,一个高原创,高收藏,有干货的微信公众号,一起成长,一起进步,欢迎关注Docker是什么?Docker是一个...

2022-11-09 07:50:25查看全文 >>

docker与容器的关系(docker中的镜像和容器是什么)

docker与容器的关系(docker中的镜像和容器是什么)

容器化是解决传统虚拟化带来的障碍的解决方案。自问世以来,虚拟机(VM)使公司能够做到事半功倍。单个物理设备可以通过虚拟机...

2022-11-09 07:54:20查看全文 >>

docker容器技术的特点有哪些(docker容器化有什么用)

docker容器技术的特点有哪些(docker容器化有什么用)

什么是容器? 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。 容器镜像是轻量的...

2022-11-09 08:14:53查看全文 >>

docker容器用来干嘛的(容器docker 能干什么)

docker容器用来干嘛的(容器docker 能干什么)

简介 如果要用一句话概括Docker是什么,那么可以说【Docker是一个轻量级的,可以将应用程序及其依赖打包到容器中的...

2022-11-09 07:57:02查看全文 >>

郫都区的飞机场修在哪里(郫县飞机场定位在哪里呢)

郫都区的飞机场修在哪里(郫县飞机场定位在哪里呢)

近期,成都市召开了航空航天产业生态圈建设工作推进暨产业生态圈联盟筹建动员部署会,对相关工作拟定了推进时间表,这意味着我市...

2022-11-09 08:07:50查看全文 >>

文档排行