![9560b3cd9c9490f3f8f7ec5ee3e97817.png](https://i-blog.csdnimg.cn/blog_migrate/1380c189bee26ea2773b0ef38e6b8a18.jpeg)
1、Docker是什么
Docker本身并不是容器,它是创建容器的工具,它是一个开源的应用容器引擎,使用Go语言开发并遵从Apache2.0协议开源,基于Linux内核的cgroup、namespace、Union FS等技术,对应用进程进行封装隔离,并且独立于宿主机与其他进程,这种运行时封装的状态称之为容器。
Docker 理念是将应用及依赖包打包到一个可移植的容器中,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 发新版Docker引擎上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间相互隔离不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
2、Docker的应用场景
--Web 应用的自动化打包和发布。
--自动化测试和持续集成、发布。
--在服务型环境中部署和调整数据库或其他的后台应用。
--从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
3、Docker的优点
【1】简化程序:
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
【2】避免选择恐惧症:
如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
【3】节省开支:
一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
4、Docker的体系架构
Docker使用C/S架构。client向server端发送请求,server端负责构建、运行和分发容器。
client和server可以运行在同一个Host上,client也可以通过socket或RESTful API与远程的server通信。
![2a96d0eaec5cb7c8b99ddcebac3eb084.png](https://i-blog.csdnimg.cn/blog_migrate/d8c88017b9cf5d79b682f192db470c51.jpeg)
4.1 Docker的核心组件
【1】Docker客户端: Client
常用的Docker客户端是docker命令。通过docker我们可以方便地在Host上构建和运行容器。
docker可以支持很多操作(子命令),仅需一条即可知道:
[root@k8s-master /]# docker
【2】Docker服务器:Docker Danemon 守护进程
Docker 客户端/守护进程,采用客户端/服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker Danemon是服务器组件,以linux后台服务的方式运行:
![6fbaf7c319ac1f6bdb6eece28d7b9317.png](https://i-blog.csdnimg.cn/blog_migrate/b22b3b3e978de23cfc73f250f3e3195f.jpeg)
Docker Danemon运行在Docker Host上,负责创建、运行、监控容器、构建、存储镜像。
默认配置下,Docker Danemon只能响应来自本地Host的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开TCP监听,步骤如下:
====》允许远程客户端请求配置
编辑配置文件:
[root@k8s-master /]# vi etc/systemd/system/multi-user.target.wants/docker.service
在环境变量ExecStart后面添加-H tcp://0.0.0.0,允许来自任意IP的客户端连接.
重启docker daemon:
[root@k8s-master /]# systemctl daemo-reload
[root@k8s-master /]# systemctl restart docker.service
服务器IP为192.168.72.134,客户端在命令行里加上-H参数,即可与远程服务器通信。
![65cbe2baf8a8cc7487bf3d2df2da9ed3.png](https://i-blog.csdnimg.cn/blog_migrate/20d943cbeaa3a4737505a172a707ff20.jpeg)
info子命令用于查看Docker服务器的信息。
【3】Docker镜像:Image
Docker镜像是Docker容器的基础,类似于虚拟机镜像,可以理解为一个面向Docker引擎的只读模板,包含了文件系统,它的底层采用层叠的只读文件系统。
docker使用联合加载方式,一次把各层文件系统叠加到一起。镜像是软件生命周期的构建和打包阶段
【4】Docker容器:Container
Docker 容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。
Docker容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离的、互不可见。
容器自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。
容器时软件启动和运行阶段
容器与镜像的关系类似于面向对象编程中的对象与类。
Docker 镜像
容器 对象
镜像 类
4.2 Docker的安装
至于Docker的安装,不再赘述,可参考CentOS 7.6 环境,安装单机版kubernetes和Docker
5、 小结
Docker本身并不是容器,它是创建容器的工具,它是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
Docker的三大核心:镜像、容器、仓库
通过这三大核心所构建的高效工作流程,毫无疑问,正是Docker从众多虚拟化方案中脱颖而出的重要原因。接下来,在后续内容中,我们将进一步地围绕这三大核心进行学习。
————————————————
愿你就像早晨八九点钟的太阳,活力十足,永远年轻。
————————————————
一入IT深似海,从此学习是常态,上面内容只是冰山一角。关注"JohnnyHL",决战秋名山,coding到天亮!