逐步深入Docker(一)

Docker

Docker的前身是LXC Linux Container,拥有自己独立的空间、进程和网络,可以在一台主机部署多个Service Container,将操作系统的资源虚拟化。

Docker实现了对应用的封装、部署、运行的生命周期管理,只要在glibc的环境下,都可以运行。

Docker和LXC是什么关系?

Docker集成自LXC,并在其基础上扩展了更强大的功能。

什么是Docker?

Docke是一款开源应用容器引擎,基于Go语言开发。

Docker可以让开发者打包一个应用和它的依赖到一个轻量级、可移植的容器中,然后发布到任何流行的Linux服务器中,也可以实现虚拟化。

Docker完全使用沙箱机制,相互之间没有接口且开销率极低。

Docker的特点:

  • 灵活:即使是最复杂的应用也可以集装箱化。
  • 轻量级:容器利用并共享主机9内核。
  • 可互换:您可以即时部署更新和升级。
  • 便携式:您可以在本地构建,部署到云,并在任何地方运行。
  • 可扩展:您可以增加并自动分发容器副本。
  • 可堆叠:您可以垂直和即时堆叠服务。

镜像(image)

docker镜像就是一个只读模板,比如一个镜像可以包含一个完整的centos,里面仅安装apache和用户的其他应用,镜像可以用来创建docker容器,另外docker提供了一个很简单的机制来创建镜像和更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。

容器(container)

docker通过容器来运行应用,容器是镜像创建的运行实例,它可以被启动,开始、停止、删除、每个容器都是互相隔离的,保证平台的安全,可以把容器看做是个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用。

仓库(repository)

仓库是集中存储镜像文件的地方,registry是仓库主从服务器,实际上仓库主从服务器上存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签,仓库分为两种,公有仓库和私有仓库,最大的公有仓库是docker Hub,存放了数量庞大的镜像供用户下载,国内有docker pool,这里仓库的概念与git类似,registry可以理解为github这样的托管服务。

通过镜像启动一个容器,一个镜像是一个可执行的包,其中包含应用的代码、运行时间、库、环境变量和配置文件。

容器是镜像的运行实例,当运行时可以用命令查看运行状态和进程。

容器在本机上运行,并与其他容器共用一个内核,有一个独立运行的进程,不与其他应用抢占内存,非常轻量。

Docker与OpenStack比较

类别 Docker OpenStack
部署难度 非常简单 组件多,部署复杂
启动速度 秒级 分钟级
执行性能 和物理系统几乎一致 VM会占用一些资源
镜像体积 镜像MB级别 虚拟机镜像GB级别
管理效率 关键简单 组件相互依赖,管理复杂
隔离性 隔离性高 彻底隔离
可管理性 单进程 完整的管理进程
网络连接 比较弱 借助neutron可以灵活管理各组件的网络

对各岗位的优势

面向产品:产品交付

面向开发:简化环境配置

面向测试:多版本测试

面向运维:环境一致性

面向架构:自动化扩容(微服务)

应用不用担心运行环境的问题,所有服务器都是自动分配容器,自动部署,自动运行,自动扩容。

理论上只要服务器配置足够,就不用担心,磁盘,CPU和内存问题。

自动迁移、可以制作镜像,随时都可以恢复。

posted @ 2021-07-09 17:43  技术宅的化身  阅读(42)  评论(0编辑  收藏  举报