Docker认识基础

标签: docker 认识 基础 | 发表时间:2015-09-05 03:37 | 作者:chszs
出处:http://blog.csdn.net

Docker认识基础

作者:chszs,版权所有,未经同意,不得转载。博主主页: http://blog.csdn.net/chszs

一、Docker介绍

Docker是一个C/S架构的容器引擎,它包括镜像、容器和库这三个重要的概念。
Docker是一个开源平台,它包含容器引擎和Docker Hub注册服务器。

1)Docker容器引擎
此引擎可以让开发者打包自己的应用和依赖包到一个可移植的容器中,然后将其发布到任何流行的Linux机器上。

2)Docker Hub注册服务器
用户可以在该服务器上创建自己的镜像库来存储、管理和分享镜像。利用Docker,可以实现软件的一次配置、到处运行。
Docker是PaaS提供商dotCloud公司(后改名为Docker)开源的、基于LXC的高级容器引擎,源码托管于GitHub,基于GoLang开发,以Apache 2.0许可证发布。

Docker的特性:

1)统一的打包格式
Docker定义了一种统一标准的打包格式,可将应用及其依赖打包到单个的镜像。

2)交互式Shell
Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。

3)版本控制
Docker的版本控制类似于Git,Docker可以跟踪一个容器的版本信息,查看版本差异,提交或回滚版本等。

4)组件复用
Docker容器以组件的方式搭建,可以利用一个基础镜像构建更多的应用容器。

5)共享镜像
Docker用于一个公共的注册服务器,无数的开发者上传了他们的镜像,这些镜像包罗万象,基本上各种应用领域、应用场景都可以找到相应的镜像。

6)内容的隔离
文件系统隔离:每个进程容器运行在完全独立的根文件系统里;
资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源;
网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址。

7)日志记录
Docker将会收集和记录每个进程容器的标准流,用于实时检索或批量检索。

8)写时复制
Docker采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间.

二、容器vs.虚拟机

Docker是容器的一种,容器是一种轻量级的虚拟技术,重量级的虚拟技术就是虚拟机。
虚拟机是一种基于硬件的虚拟技术,它采用指令集的虚拟,完全虚拟一整套物理主机,包含CPU、内存、磁盘、网卡等硬件设备,呈现给用户的是一个物理机的特性。
用户可以在一台主机上安装多个虚拟机,每一个虚拟机实例都包含了完整的硬件虚拟层、OS、公共库等。
容器是一种基于操作系统的虚拟技术,它运行于操作系统之上的用户空间,所有的容器都共用一个系统内核,甚至是公共库。容器引擎提供了进程级的隔离,让每个容器都像是运行在单独的系统之上,但又能共享很多底层的资源。
与虚拟机相比,容器更为轻量级、更快速、更易于管理、资源占用更小。
除了Docker,场景的容器还有Solaris Zones、BSD jails、OpenVZ和LXC等。

三、Docker的应用场景

下面列举一些Docker典型的应用场景。
1)加速本地开发
2)自动打包和部署应用
3)创建轻量级、私有的PaaS环境
4)自动化测试和持续集成/部署
5)部署并扩展Web应用、数据库和后端服务器
6)创建安全沙盒
7)轻量级的桌面虚拟化

四、Docker的组件

Docker采用C/S架构开发,整体架构如图所示:
Docker架构

包括:

1)Docker客户端
即Docker的可执行程序,它可以通过命令行和API的形式与Docker的守护进程进行通信。

2)Docker守护进程
Docker守护进程提供Docker服务。

五、Docker三大核心组件

Docker有三大核心组件:镜像、容器和库

1)镜像
镜像是一个只读的静态模板,保存了容器需要的环境和应用的执行代码。镜像采用分层机制,每个镜像都是只读的,但可以将写数据的层通过联合文件系统附加到原有的镜像上。这样镜像就很易于存储、传输和更新。

2)容器
容器是一个运行时环境,是镜像的运行状态,是镜像执行的动态表现。容器提供了应用的统一的运行方式:创建、开始、停止、重启、销毁。

3)库
Docker采用注册服务器来存储和共享用户的镜像,库是某个特定用户存储镜像的目录。通常一个用户可以建立多个库来保存自己的镜像。库是注册服务器的一部分,注册服务器分公有的和私有的,公有的如Docker官方提供的Docker Hub。

六、Docker的度量

Docker是利用容器来实现的一种轻量级的虚拟技术,从而在保证隔离性的同时达到节省资源的目的。Docker的可移植性可以让它一次建立,到处运行。Docker的度量可以从以下四个方面进行:

1)隔离性
Docker采用libcontainer作为默认容器,代替了以前的LXC。libcontainer的隔离性主要是通过内核的命名空间来实现的,有pid、net、ipc、mnt、uts命令空间,将容器的进程、网络、消息、文件系统和主机名进行隔离。

2)可度量性
Docker主要通过cgroups控制组来控制资源的度量和分配。

3)移植性
Docker利用AUFS来实现对容器的快速更新。
AUFS是一种支持将不同目录挂载到同一个虚拟文件系统下的文件系统,支持对每个目录的读写权限管理。AUFS具有层的概念,每一次修改都是在已有的只写层进行增量修改,修改的内容将形成新的文件层,不影响原有的层。

4)安全性
安全性可以分为容器内部之间的安全性;容器与托管主机之间的安全性。
容器内部之间的安全性主要是通过命名空间和cgroups来保证的。
容器与托管主机之间的安全性主要是通过内核能力机制的控制,可以防止Docker非法入侵托管主机。

Docker容器使用AUFS作为文件系统,有如下优势:

1)节省存储空间
多个容器可以共享同一个基础镜像存储。

2)快速部署
如果部署多个来自同一个基础镜像的容器时,可以避免多次复制操作。

3)升级方便
升级一个基础镜像即可影响到所有基于它的容器。

4)增量修改
可以在不改变基础镜像的同时修改其目录的文件,所有的更高都发生在最上层的写操作层,增加了基础镜像的可共享内容。

作者:chszs 发表于2015/9/4 19:37:37 原文链接
阅读:0 评论:0 查看评论

相关 [docker 认识 基础] 推荐:

Docker认识基础

- - CSDN博客推荐文章
作者:chszs,版权所有,未经同意,不得转载. 博主主页: http://blog.csdn.net/chszs. Docker是一个C/S架构的容器引擎,它包括镜像、容器和库这三个重要的概念. Docker是一个开源平台,它包含容器引擎和Docker Hub注册服务器. 1)Docker容器引擎.

Racher Docker基础环境配置 | Rancher Docs

- -
因为K8S的规定,主机名只支持包含  - 和  .(中横线和点)两种特殊符号,并且主机名不能出现重复. 配置每台主机的hosts(/etc/hosts),添加. host_ip $hostname到. CentOS关闭selinux. 关闭防火墙(可选)或者放行相应端口. 对于刚刚接触Rancher的用户,建议在关闭防火墙的测试环境或桌面虚拟机来运行rancher,以避免出现网络通信问题.

Docker & Flatpak

- - IT瘾-dev
目前最流行的技术莫过于Docker,Docker和Docker衍生的东西用到了很多很酷的技术,目前deepin应用软件发布转变成flatpak,这些看似风牛马不相及的技术方案,实际都使用了一个共同的底层技术——Namespace,假如没有namespace支持,这些技术实现都将成为空中楼阁. 一句话总结,无论是Docker、sysmted-nspawn还是flatpak,都是在namespace基础上,针对不同的场景,生出的不同的解决方案.

docker初体验之docker-tomcat

- - BlogJava-首页技术区
docker已经是现在最热的容器技术,最近也去体验了一下,在daocloud注册了一个账号,并开始本机实战docker. daocloud免费有两个容器可用,体验送T恤,邀请送书,这里我分享一个daocloud的邀请码 https://account.daocloud.io/signup?invite_code=mxeq2jkmcur37vz6ven8,daocloud是非常棒的容器云平台,使用体验好,问题响应也及时,绑定微信还送一个额外容器.

kubernetes移除Docker?

- -
两周前,Kubernetes在其最新的Changelog中宣布1.20之后将要弃用dockershime,也就说Kubernetes将不再使用Docker做为其容器运行时. 这一消息持续发酵,掀起了不小的波澜,毕竟Kubernetes+Docker的经典组合是被市场所认可的,大量企业都在使用. 看上去这个“弃用”的决定有点无厘头,那么为什么Kubernetes会做出这样的决定.

Docker应用场景

- - 灯火阑珊
Flynn:一个使用go语言编写的开源PaaS平台,目标是简化分布式环境中应用的部署和维护,可以通过git push命令,将应用部署到Docker,从而省去复杂的配置和操作. CoreOS:一种新的架构体系重新设计的Linux发型版,可以运行在既有的硬件活着云服务器上. CoreOS不提供类似yum或apt的包管理工具,用户不需要在CoreOS中安装软件,而是让程序都在Docker容器中运行.

docker使用场景

- - 开源软件 - ITeye博客
Docker应用容器相对于 VM 有以下几个优点:. 1、启动速度快,容器通常在一秒内可以启动,而 VM 通常要更久. 2、资源利用率高,一台普通PC 可以跑上千个容器,你跑上千个 VM 试试. 3、性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源. 因为VM 的 Hypervisor 需要实现对硬件的虚拟化,并且还要搭载自己的操作系统,自然在启动速度和资源利用率以及性能上有比较大的开销.

Docker 监控实战

- - SegmentFault 最新的文章
如今,越来越多的公司开始使用 Docker 了,现在来给大家看几组数据:. 2 / 3 的公司在尝试了 Docker 后最终使用了它. 也就是说 Docker 的转化率达到了 67%,而转化市场也控制在 60 天内. 越大型的公司越早开始使用 Docker. 研究发现主机数量越多的公司,越早开始使用 Docker.

Docker入门例子

- - 开源软件 - ITeye博客
Docker 提供了一个可以运行应用程序的容器. Docker 容器并不包含一个单独的操作系统,而是基于已有的基础设施中操作系统提供的功能来运行的. 2 Docker安装与启动. #将docker加入开机启动. 3 Docker的14个基础命令. 检查Docker的安装是否正确. 运行"Hello World"例子.

Docker 调试技巧

- - 行业应用 - ITeye博客
摘要: 『重用』容器名 但我们在编写/调试Dockerfile的时候我们经常会重复之前的command,比如这种docker run --name jstorm-zookeeper zookeeper:3.4,然后就容器名就冲突了. 但我们在编写/调试Dockerfile的时候我们经常会重复之前的command,比如这种.