Docker技术
Posted zhangquan-yw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker技术相关的知识,希望对你有一定的参考价值。
Docker技术
制作人:全心全意
Docker概述
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙盒机制,相互之间不会有任何接口。几乎没有性能开销,可以很容易地在机器和数据中心运行。最重要的是它不依赖于任何语言、框架或包装系统。
注:沙盒也叫沙箱,英文是sandbox。在计算机领域指一种虚拟技术,且所用于计算机安全技术,安全软件可以让病毒软件在沙盒中运行,如果含有恶意行为,则禁止程序的进一步运行,从而不会对系统造成任何损害。
Docker是dotCloud公司开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。
注意:目前,windows环境下,也支持docker运行
扩展:LXC是Linux Container的简写。Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其它复杂性。主要通过来自kernel的namespace实现每个用户实例之间的相互隔离,通过cgroup实现对资源的配额和度量。
官方网站:https://www.docker.com
源码网址:https://github.com/docker/docker
docker容器技术和虚拟化技术对比
相同点:docker容器技术和虚拟机技术,都是虚拟化技术。
docker相对于虚拟机,少了虚拟机操作系统这一层,所有docker效率比虚拟机高
docker架构图
Image和Container的关系:Image可以理解为一个系统镜像,Container是image在运行时的一个状态。如果拿虚拟机做一个比喻的话,Image就是关机状态下的磁盘文件,Container就是虚拟机运行时的磁盘文件,包括内存数据。
dockerhub:dockerhub是docker官方的镜像存储站点,其中提供了很多常用的镜像供用户下载,如ubuntu、centos等系统镜像。通过dockerhub用户也可以发布自己的docker镜像,为此用户需要注册一个账号,在网站上创建一个docker仓库。
docker的特性
文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
资源隔离:系统资源,像CPU和内存等可以分配到不同的容器中,使用cgroup
网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和IP地址。
日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
变更管理:容器文件系统的变更可以提交到新的镜像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
交互式shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。
docker的局限性
docker用于应用程序时是最有用的,但并不包含数据。日志、跟踪和数据库等通常应放在Docker容器外。一个容器的镜像通常都很小,不适合存大量数据,存储可以通过外部挂载的方式使用。例如使用NFS、ipsan、MFS等,-v映射磁盘分区。一句话,docker只用于计算,存储交给别人。
以上是关于Docker技术的主要内容,如果未能解决你的问题,请参考以下文章