为了账号安全,请及时绑定邮箱和手机立即绑定

Docker基本概念科普

标签:
Docker 容器

我个人学习一个新的东西的时候,总喜欢从几个方面入手:

```

1、是什么

2、有什么

3、能干什么

```

本篇文章,主要从这几个方面,描述一下Docker的基本概念


# Docker是什么


Docker是基于容器技术的轻量级虚拟化,是一个能够把开发的应用程序自动部署到容器的开源引擎。


Docker借鉴集装箱的概念,只不过集装箱用来运输货物,Docker运输软件,Docker并不关心:装的内容是什么、也不关心要运到何处


所以其实描述Docker,主要要理解两个概念:

```

容器:容器是啥?  就是个装东西的篮子,至于这个篮子装的是鸡蛋,还是冬瓜它不关心,它要关心的内容是如何更好的装东西

```

```

虚拟化:通过某种技术将一台计算机虚拟为多台逻辑计算机

```

---

那么Docker其实总结下来就是一句话: 一个在物理机器的基础上开辟出来的一种"篮子",至于用它来装什么,怎么装不关心,它只关心如何更好的装东西


比如我们有个Java项目, 我们需要安装JDK、Tomcat和一个APP, 那么我们可以用这个"篮子"把他们三个装起来,只要在任何一台能识别Docker的机器上,我们都能运行这个APP, 就是这个道理


# Docker有什么

1:Docker客户端和服务端

     客户端用来通过Docker守护进程,去访问Docker容器,Docker容器运行在Docker主机上,也就是服务器上


2:Docker镜像

     镜像相当于容器的“源代码”,镜像类似于类,而容器类似于实例;镜像类似于Maven仓库管理的jar


3:Registry

     类似于Maven仓库,Docker公司提供的官方registry被称为Docker Hub


4:Docker 容器

     容器是镜像的运行时实例,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境。容器为镜像提供了一个标准的和隔离的运行环境


# Docker能干什么

1:加速本地开发和构建流程,使其更加高效、更加轻量化

2:能让独立服务或应用程序在不同的环境中,得到相同的运行结果

3:用Docker创建隔离的环境来测试

4:Docker可以在开发者本机上构建复杂的环境,用来进行测试

5:构建一个多用户的平台即服务(PaaS)的基础设施

6:为开发、测试提供一个轻量级的独立沙盒环境

7:提供软件即服务(SaaS)应用程序

8:支持高性能、超大规模的宿主机部署



# Docker技术组件

1:文件系统隔离:每个容器都有自己的root系统

2:进程隔离:每个容器都运行在自己的进程环境中

3:网络隔离:容器间的虚拟网络接口和IP地址都是分开的

4:资源隔离和分组:使用cgroups,将cpu和内存之类的资源独立分配给每个docker容器

5:写时复制:文件系统都是通过写时复制创建的,这意味着文件系统是分层的、快速的,且

占用磁盘空间更小

6:日志:容器会收集日志流并计入日志,用来进行日志分析和故障排查

7:交互式shell:用户可以通过终端,使用交互式shell来与docker服务器交互


# Docker和传统虚拟机技术的不同 【面试点哦!~~】

1:虚拟机是利用硬件虚拟化技术,来实现对硬件资源进行划分,同时通过一个hypervisor来实现对资源的完全隔离;容器上操作系统级别的虚拟化,利用的时候内核的cgroup和namespace特性,完全通过软件实现。

2:虚拟机会独占分配给自己的资源,各个虚拟机之间基本完全隔离,不存在资源共享,比较重量级;容器与主机共享操作系统内核,不同容器之间可以共享部分系统资源,因此相对更轻量级。

3:在一台物理机上能启动的虚拟机很有限,而且启动通常都在十几秒以上;我们可以在一台服务器上启动成百上千Docker容器,启动时间通常在秒级


![](http://114.67.95.79/wp-content/uploads/2019/04/9693890e04f6c0f72fa83cda9a61c28f.png)


# Docker中基本概念

镜像(Image)

镜像,从认识上简单的来说,就是面向对象中的类,相当于一个模板。从本质上来说,镜像相当于一个文件系统。Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。


容器(Container)

容器,从认识上来说,就是类创建的实例,就是依据镜像这个模板创建出来的实体。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。


仓库(Repository)

仓库,从认识上来说,就好像软件包上传下载站,有各种软件的不同版本被上传供用户下载。镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。



点击查看更多内容
6人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1.5万
获赞与收藏
623

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消