Docker容器基础
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker容器基础相关的知识,希望对你有一定的参考价值。
前言
统称来说,容器是一种工具,指的是可以装下其它物品的工具,以方便人类归纳放置物品、存储和异地运输,具体来说比如人类使用的衣柜、行李箱、背包等可以成为容器,但今天我们所说的容器是一种IT技术。
容器技术是虚拟化、云计算、大数据之后的一门新兴的并且是炙手可热的新技术,容器技术提高了硬件资源利用率、方便了企业的业务快速横向扩容、实现了业务宕机自愈功能,因此未来数年会是一个容器愈发流行的时代,这是一个对于IT行业来说非常有影响和价值的技术,而对于IT行业的从业者来说,熟练掌握容器技术无疑是一个很有前景的的行业工作机会。
Docker简介
1、什么是Docker:
首先Docker是一个在2013年开源的应用程序并且是一个基于go语言编写是一个开源的pass服务(Platform as a Service,平台即服务的缩写),go语言是由google开发,docker公司最早叫dotCloud后由于Docker开源后大受欢迎就将公司改名为 Docker Inc,总部位于美国加州的旧金山,Docker是基于linux 内核实现,Docker最早采用LXC技术(LinuX Container的简写,LXC是Linux 原生支持的容器技术,可以提供轻量级的虚拟化,可以说 docker 就是基于 LXC 发展起来的,提供 LXC 的高级封装,发展标准的配置方法),而虚拟化技术KVM(Kernel-based Virtual Machine) 基于模块实现,Docker后改为自己研发并开源的runc技术运行容器。
Docker 相比虚拟机的交付速度更快,资源消耗更低,Docker 采用客户端/服务端架构,使用远程API来管理和创建Docker容器,其可以轻松的创建一个轻量级的、可移植的、自给自足的容器,docker 的三大理念是build(构建)、ship(运输)、 run(运行),Docker遵从aoache 2.0协议,并通过(namespace及cgroup等)来提供容器的资源隔离与安全保障等,所以Docke容器在运行时不需要类似虚拟机(空运行的虚拟机占用物理机6-8%性能)的额外资源开销,因此可以大幅提高资源利用率,总而言之Docker是一种用了新颖方式实现的轻量级虚拟机.类似于VM但是在原理和应用上和VM的差别还是很大的,并且docker的专业叫法是应用容器(Application Container)。
2、docker的组成:
2.1、Docker 客户端(Client):客户端使用docker 命令或其他工具调用docker API。
2.2、Docker 服务端(Server):Docker守护进程,运行docker容器。
2.3、Docker 镜像(Images):镜像可以理解为创建实例使用的模板。
2.4、Docker 容器(Container): 容器是从镜像生成对外提供服务的一个或一组服务。
2.5、Docker 仓库(Registry): 保存镜像的仓库,类似于git或svn这样的版本控制系统,官方仓库: https://hub.docker.com/
2.6、Docker 主机(Host):一个物理机或虚拟机,用于运行Docker服务进程和容器
3、Docker在开发和运维中的优势:
3.1、更快速的交付和部署
3.2、更高的资源利用
3.3、更轻松的迁移和扩展
3.4、更简单的更新管理
4、Docker与虚拟机比较
4.1、Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式(数分钟)要快很多
4.2、Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。
4.3、Docker通过类似Git设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新
4.4、Docker通过Dockerfile支持灵活的自动化创建和部署机制,以提高工作效率,并标准化流程。
4.5、Docker容器除了运行其中的应用外,基本不消耗额外的系统资源,在保证应用性能的同时,尽量减少系统开销。传统虚拟机方式运行N个不同的应用就要启动N个虚拟机(每个虚拟机单独分配独占的内存、磁盘等资源),而Docker只需要启动N个隔离的“很薄的”容器,并将应用放进容器内即可。
核心概念
docker的三大核心概念:
镜像
容器
仓库
只有理解了这三个核心概念,才能顺利地理解docker容器的整个生命周期。
docker大部分的操作都围绕着它的三大核心概念:镜像、容器、仓库。准确把握这三大核心概念对掌握docker技术尤为重要。
docker镜像:
docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模版。
例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了Apache应用程序或者其他需要的软件。可以把它称为一个Apache镜像。
镜像是创建docker容器的基础。
通过版本管理和增量的文件系统,docker提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并直接使用。
docker容器:
docker容器类似于一个轻量级的沙箱,docker利用容器来运行和隔离应用。
容器是从镜像创建的应用运行实例,他可以启动、开始、停止、删除、而这些容器都是彼此相互隔离、互不可见的。
可以把容器看作一个简易版的Linux系统环境(包括root用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序打包而成的盒子
注意:镜像自身是只读的,容器镜像启动的时候,会在镜像的最上层创建一个可写层。
docker仓库:
docker仓库类似于代码仓库,是docker集中存放镜像文件的场所。
根据所存储的镜像公开分享与否,docker仓库可以分为两类:
公开仓库
私有仓库
docker引擎:
docker引擎是使用docker容器的核心组件,可以在主流的操作系统和云平台上使用。包括Linux操作系统(如Ubuntu、Debian、centos、Redhat等),macOS和Windows操作系统,以及IBM、亚马逊、微软等知名云平台。
目前docker支持docker引擎、docker hub、docker cloud等多种服务。
docker引擎:
包括支持在桌面系统或云平台安装docker,以及为企业提供简单安全弹性的容器集群编排和管理;
dockerhub:
官方提供的云托管服务,可以提供共有或者私有的镜像仓库
dockercloud:
官方提供的容器云服务,可以完成容器的部署与管理,可以完整地支持容器化项目,还有 CI、CD 功能。
docker引擎目前分为两个版本:
社区版本(Community Edition, CE)
企业版本(Enterprise Edition, EE)
以上是关于Docker容器基础的主要内容,如果未能解决你的问题,请参考以下文章