上海网站推广专员需求,北京seo关键词排名,苏州网络seo,室内设计联盟首页What - 什么是容器
容器是一种轻量级、可移植、自包含的软件打包技术#xff0c;使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器#xff0c;无须任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。容器与虚拟机谈…What - 什么是容器
容器是一种轻量级、可移植、自包含的软件打包技术使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器无须任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。容器与虚拟机谈到容器就不得不将它与虚拟机进行对比因为两者都是为应用提供封装和隔离。容器由两部分组成1应用程序本身2依赖比如应用程序需要的库或其他软件容器在Host操作系统的用户空间中运行与操作系统的其他进程隔离。这一点显著区别于的虚拟机。传统的虚拟化技术比如VMWare、KVM、Xen目标是创建完整的虚拟机。为了运行应用除了部署应用本身及其依赖通常几十MB还得安装整个操作系统几十GB。图2-1所示展示了二者的区别。
如图2-1所示由于所有的容器共享同一个Host OS这使得容器在体积上要比虚拟机小很多。另外启动容器不需要启动整个操作系统所以容器部署和启动速度更快、开销更小也更容易迁移。
Why - 为什么需要容器
如今的系统在架构上较十年前已经变得非常复杂了。以前几乎所有的应用都采用三层架构Presentation/Application/Data系统部署到有限的几台物理服务器上Web Server/Application Server/Database Server。而今天开发人员通常使用多种服务比如MQ、Cache、DB构建和组装应用而且应用很可能会部署到不同的环境比如虚拟服务器、私有云和公有云
一方面应用包含多种服务这些服务有自己所依赖的库和软件包另一方面存在多种部署环境服务在运行时可能需要动态迁移到不同的环境中。这就产生了一个问题如何让每种服务能够在所有的部署环境中顺利运行
如何解决这个问题呢聪明的技术人员从传统的运输行业找到了答案。
每一次运输货主与承运方都会担心因货物类型的不同而导致损失比如几个铁桶错误地压在了一堆香蕉上。另一方面运输过程中需要使用不同的交通工具也让整个过程痛苦不堪货物先装上车运到码头卸货然后装上船到岸后又卸下船再装上火车到达目的地最后卸货。一半以上的时间花费在装货、卸货上而且搬上搬下还容易损坏货物。
任何货物无论钢琴还是保时捷都被放到各自的集装箱中。集装箱在整个运输过程中都是密封的只有到达最终目的地才被打开。标准集装箱可以被高效地装卸、重叠和长途运输。现代化的起重机可以自动在卡车、轮船和火车之间移动集装箱。集装箱被誉为运输业与世界贸易最重要的发明
Docker将集装箱思想运用到软件打包上为代码提供了一个基于容器的标准化运输系统。Docker可以将任何应用及其依赖打包成一个轻量级、可移植、自包含的容器。容器可以运行在几乎所有的操作系统上如图2-8所示 容器意味着环境隔离和可重复性。开发人员只需为应用创建一次运行环境然后打包成容器便可在其他机器上运行。另外容器环境与所在的Host环境是隔离的就像虚拟机一样但更快更简单。对于运维人员Configure Once、Run Anything。只需要配置好标准的runtime环境服务器就可以运行任何容器。这使得运维人员的工作变得更高效、一致和可重复。容器消除了开发、测试、生产环境的不一致性。
How - 容器是如何工作的
Docker的核心组件包括● Docker客户端Client● Docker服务器Docker daemon● Docker镜像Image● Registry● Docker容器Container Docker采用的是Client/Server架构。客户端向服务器发送请求服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一个Host上客户端也可以通过socket或REST API与远程的服务器通信
Docker镜像可将Docker镜像看成只读模板通过它可以创建Docker容器。例如某个镜像可能包含一个Ubuntu操作系统、一个Apache HTTP Server以及用户开发的Web应用。镜像有多种生成方法 1从无到有开始创建镜像 2下载并使用别人创建好的现成的镜像 3在现有镜像上创建新的镜像。可以将镜像的内容和创建步骤描述在一个文本文件中这个文件被称作Dockerfile通过执行docker build 命令可以构建出Docker镜像
Docker容器Docker容器就是Docker镜像的运行实例。用户可以通过CLIDocker或是API启动、停止、移动或删除容器。可以这么认为对于应用软件镜像是软件生命周期的构建和打包阶段而容器则是启动和运行阶段。
RegistryRegistry是存放Docker镜像的仓库Registry分私有和公有两种。Docker Hubhttps://hub.docker.com/是默认的Registry由Docker公司维护上面有数以万计的镜像用户可以自由下载和使用。出于对速度或安全的考虑用户也可以创建自己的私有Registry。后面我们会学习如何搭建私有Registry。docker pull命令可以从Registry下载镜像。docker run命令则是先下载镜像如果本地没有然后再启动容器。