Docker
Docker概述
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙盒机制,相互之间不会有任何接口(类似iPhone的APP)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。
扩展:沙盒
沙盒也叫沙箱,英文sandbox。在计算机领域指一中虚拟技术,且多用于计算机安全技术。安全软件可以先让他在沙盒中运行,如果含有恶意行为,则禁止程序的进一步运行,而这不会对系统造成任何危害。
Docker是dotCloud公司开源的一个基于LXC的高级容器引擎,源代码托管在GitHub上,基于go语言并遵从Apache2.0协议开源。
Docker让开发者可以打包他们的应用以及依赖包到一个可移植的container中,然后发布到任何流行的Linux机器上。
扩展:LXC
LXC为Linux Container的简写。Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。
LXC主要通过来自kernel的namespace实现每个用户示例之间的相互隔离,通过cgroup实现对资源的配额和度量。
官方网站:
Docker官网:https://www.docker.com/
Docker的GitHub地址:https://github.com/moby/moby
Docker hub官网:https://registry.hub.docker.com/
Dockerhub:Dockerhub是Docker官方的镜像存储站点,其中提供了很多常用的镜像供用户下载,如Ubuntu、CentOS等系统镜像。通过Dockerhub用户也可以发布自己的Docker镜像,为此用户需要注册一个账号,在网站上创建一个Docker仓库。
Docker核心技术
- Namespace-实现Container的进程、网络、消息、文件系统和主机名的隔离。
- Cgroup-实现对资源的配额和度量。
注:Cgroup的配额,可以指定实例使用的CPU个数,内存大小等。
官方logo:
![](https://img2022.cnblogs.com/blog/2236821/202205/2236821-20220519072843235-1661375176.jpg)
Docker特性
- 文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
- 资源隔离:系统资源,像CPU和内存等可以分配到不同的容器中,使用Cgroup。
- 网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和IP地址。
- 日志记录:Docker将会收集和记录每个进程容器的标准流(stdout、stderr、stdin),用于实时检索或批量检索。
- 变更管理:容器文件系统的变更可以提交到新的镜像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
- 交互式shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。
Docker优点
- 一些优势和VM一样,但不是所有都一样。比VM小,比VM快,Docker容器的尺寸减小相比整个虚拟机大大简化了分布到云和从云分发时间和开销。Docker启动一个容器实例时间很短,一两秒就可以启动一个示例。
- 对于在笔记本电脑,数据中心的虚拟机,以及任何的云上,运行相同的没有变化的应用程序,IT的发布速度更快。Docker是一个开放的平台,构建,发布和运行分布式应用程序。
- 您可以部署在公司局域网或云或虚拟机上使用他。
- Docker支持Unix、Linux操作系统,也支持Windows和Mac。
- 开源、免费、低成本。由现代Linux内核支持并驱动。轻量的Container必定可以在一个物理机上开启更多"容器",注定比VMs要便宜。
Docker局限性
- Docker用于应用程序时是最有用的,但并不包含数据。日志,跟踪和数据库等通常应放在Docker容器外。一个容器的镜像通常都很小,不适合存大量数据,存储可以通过外部挂载的方式使用。
- 所有容器共用Linux Kernel资源,资源能否实现最大限度利用,所以在安全上也会存在漏洞。
本文来自博客园,作者:NoCirc1e,转载请注明原文链接:https://www.cnblogs.com/NoCirc1e/p/16287116.html