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技术的主要内容,如果未能解决你的问题,请参考以下文章

虚拟化技术之docker技术详解

云计算核心技术Docker教程:Docker使用网桥网络

Docker技术知识点总纲

技术系列 | Docker系列1 | Docker是神马

容器技术|Docker三剑客之docker-compose

容器技术|Docker三剑客之docker-compose