一、docker(搬运工)简介

1、docker是什么

官网:www.docker.com(与文档)

Docker的英文翻译是”搬运工“的意思,他搬运的东西就是我们常说的集装箱Container,Container 里面装的是任意类型的App,我们的开发人员可以通过Docker 将App变成一种标准化的、可移植的、自管理的组件,我们可以在任何主流的操作系统中开发、调试和运行。

Docker是一个开源的应用容器引擎,基于go语言,并遵从Apathe2.0协议开源。

Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似iphone的app),更重要的是容器性能开销极低。

Docker从17.03版本之后分为CE(Community Edition:社区版)和EE(Enterprise Edition:企业版),用社区版就可以。

2、docker架构原理

1)Docker使用了C/S体系架构,Docker客户端与Docker守护进程(Docker daemon)通信,Docker守护进程负责构建,运行和分发Docker容器(Containers)。Docker客户端和守护进程可以在同一个系统上运行,也可以将Docker客户端连接到远程Docker守护进程。Docker客户端和守护进程使用REST API通过UNIX套接字或网络接口进行通信。

6b9b2d1335c54a0a9facccf677a7d8a7.jpg

 Client:客户端(docker build、docker pull、docker run 都是命令)

DOCKER_HOST:

Docker daemon:docker守护进程

Containers:docker容器(mysql、nginx、tomcat、操作系统),通过镜像new处理的

Images:docker镜像(本地)

Registry:远程仓库(远程镜像,https://hub.docker.com)

 

2)docker的三要素:镜像、容器、仓库

2.1)镜像:docker镜像(Image)就是一个只读的模板,它可以是一个可运行软件(tomcat、mysql),也可以是一个系统(centos)。镜像可以用来创建docker容器,一个镜像可以创建很多容器。

2.2)容器:docker利用容器(Containers)独立运行的一个或一组应用。容器是用镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

2.3)仓库:仓库(Repository)是集中存放镜像文件的场所,类似GitHub存放项目代码一样,只不过Docker Hub是用来存镜像(image)的。仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag,类似版本号)。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

最大的公开仓库是Docker Hub(https://hub.docker.com),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云、网易云等。

 

容器与镜像的关系类似于面向对象编程的对象与类:

33bad7e800ce4cbc9cd35dbfe24c8ad2.png

 3、docker有什么用:

1)简化环境搭建,提高开发生命周期效率

2)大大简化运维工作量

3)微服务利器

 

4、docker容器与虚拟机的区别

1)docker是一种轻量级的虚拟化技术,比传统的虚拟机性能更好。

2)下图是虚拟机的体系结构:

其中: Server:表示真实电脑

Host OS:真实电脑的操作系统,例如:Windows、linux

Hypervisor:虚拟机平台,模拟硬件,如VMWare,VirtualBox

Guest OS:虚拟机平台上安装的操作系统,例如:CentOS Linux

App:虚拟机操作系统上的应用,例如:nginx

c5de6da897fd44f296c0c61269c1b062.jpg

 3)下图是docker的体系结构: 其中: Server:表示真实电脑

Host OS:真实电脑的操作系统,例如:Windows、linux

Docker Engine:新一代虚拟化技术,不需要包含单独的操作系统

App:虚拟机操作系统上的应用,例如:nginx

3)下图是docker的体系结构: 其中: Server:表示真实电脑
Host OS:真实电脑的操作系统,例如:Windows、linux
Docker Engine:新一代虚拟化技术,不需要包含单独的操作系统
App:虚拟机操作系统上的应用,例如:nginx

a569a9753ed348af9656328327a4231d.jpg

 5)Docker有点:轻量级、速度快、运行应用隔离、方便维护。

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐