当前位置: 首页 > 科技观察

什么是码头工人?它与虚拟机有何不同?

时间:2023-03-14 16:45:00 科技观察

Docker概述Docker是一个开源的应用容器引擎,允许开发者将他们的应用和依赖包打包到一个可移植的容器中,然后发布到任何流行的Linux机器上,还可以实现虚拟化。容器完全使用沙箱机制,它们之间不会有接口(类似于iPhone应用)。几乎没有性能开销,可以轻松地在机器和数据中心上运行。最重要的是,它们不依赖于任何语言、框架或打包系统。延伸:沙箱沙箱又叫沙盒,英文sandbox。在计算机领域是指一种虚拟技术,多用于计算机安全技术。安全软件可以先让它在沙箱中运行,如果包含恶意行为,则禁止该程序继续运行,不会对系统造成任何危害。Docker是由dotCloud开源的基于LXC的高级容器引擎。源代码托管在Github上。它基于go语言,遵守Apache2.0协议。Docker允许开发人员将他们的应用程序和依赖项打包到一个可移植的容器中,然后将它们分发到任何流行的Linux机器上。官网:https://www.docker.com/docker官网docker[?d?k?(r)]Dockerlogo:logo注:docker服务相当于鲸鱼,container容器是容器。container:集装箱,集装箱docker:docker源码下载:https://github.com/docker/docker扩展:集装箱是海运货物的创新。源码下载:https://github.com/docker/dockerdocker容器技术与虚拟机的比较:相同点:docker容器技术和虚拟机技术都是虚拟化技术。docker容器技术与虚拟机对比总结:与VM虚拟机相比,docker少了虚拟机操作系统这一层,所以docker比虚拟机效率更高。在Engine上启动很多container容器,从外网的DockerHub下载image操作系统镜像,在container容器中运行。这种容器的一个实例正在运行。最后通过Docker客户端控制docker容器虚拟化平台。Image和Container的关系:Image可以理解为系统镜像,Container是Image在运行时的一种状态。如果拿虚拟机来比喻的话,Image就是关机状态下的磁盘文件,Container就是虚拟机运行时的磁盘文件,包括内存数据。dockerhub:dockerhub是docker的官方镜像存储站点,提供了很多常用的镜像供用户下载,比如ubuntu、centos等系统镜像。用户也可以通过dockerhub发布自己的docker镜像。为此,用户需要在网站上注册一个账号并创建一个docker仓库。Docker核心技术1.Namespace——实现Container的进程、网络、消息、文件系统和主机名的隔离。2.Cgroup——实现资源的配额和计量。注:cgroupquota可以指定实例使用的CPU数量,内存大小等,如下图vmware虚拟机中的硬件配置参数。虚拟机配置了Docker特性文件系统隔离:每个进程容器运行在一个完全独立的根文件系统中。资源隔离:CPU、内存等系统资源可以通过cgroups分配给不同的容器。网络隔离:每个进程容器都运行在自己的网络空间、虚拟接口和IP地址中。日志记录:Docker会收集并记录每个进程容器的标准流(stdout/stderr/stdin),以供实时或批量检索。更改管理:可以将对容器文件系统的更改提交给新映像并重新使用以创建更多容器。无需模板或手动配置。交互式shell:Docker可以派生一个虚拟终端并将其附加到任何容器的标准输入,例如运行一次性交互式shell。优点:1.有些优点和VM是一样的,但不是都一样。Docker容器比VM小但比VM快,与整个虚拟机相比体积更小,大大简化了与云之间的分发时间和开销。Docker在很短的时间内启动一个容器实例,一个实例可以在一两秒内启动。2.对于在笔记本电脑、数据中心的虚拟机和任何云上运行的相同应用程序,IT发布速度更快。Docker是一个用于构建、发布和运行分布式应用程序的开放平台。Docker使应用程序能够从组件快速组装起来,并避免开发和生产环境之间的摩擦。3.可以部署在公司局域网或者云端或者虚拟机上。4.开发者不关心哪个Linux操作系统使用Docker,开发者可以基于所有的依赖,针对自己选择的操作系统构建相应的软件。然后,部署时一切都完全一样,因为一切都在DockerImage容器上运行。开发人员负责并能够确保满足所有依赖项。5、谷歌、微软、亚马逊、IBM等都支持Docker。6.Docker支持Unix/Linux操作系统,以及Windows或Mac缺点和限制:1.Docker在用于应用程序时最有用,但不包含数据。日志、跟踪和数据库等通常应该放在Docker容器之外。容器的镜像通常很小,不适合存储大量数据。存储可以通过外部安装使用。比如使用:NFS、ipsan、NFS等,-v映射磁盘分区一句话:docker是用来计算的,存储交给别人。oracle不适合用docker跑,太大了,存储的数据太多。