什么是Docker
Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。
Docker属于容器的一种封装,提供简单易用的容器使用接口。他是目前最流行的linux容器解决方案。Docker将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。
总体来说,Docker的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
Docker组件
1、Docker客户端和服务器,也称为Docker引擎
Docker是一个客户端/服务器(c/s)架构的程序。
Docker客户端只需向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。
Docker提供了一个命令行工具以及以正太restful api来与守护进程交互。用户可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端链接到运行在另一台宿主机上的远程Docker守护进程。
2、Docker镜像
镜像是只读的,镜像中包含有需要运行的文件。镜像用来创建容器,一个镜像可以运行多个容器。
3、容器
Docker可以帮助用户构建和部署容器。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。
容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。
4、Docker hub/registry
共享和管理Docker镜像,用户可以上传或者下载上面的镜像,官方地址为 https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。
三、Docker的技术组件
Docker可以运行于任何安装了现代linux内核的x64主机上。Docker的开销比较低,可用于服务器、台式机、笔记本电脑。它包含以下几个部分:
1、一个原生的linux容器格式,Docker中称为“libcontainer”
2、linux内核的命名空间(namespace),用于隔离文件系统、进程和网络
3、进程隔离:每个容器都有自己的root文件系统
4、网络隔离:容器间的虚拟网络接口和ip地址都是分开的
5、资源隔离和分组:使用cgroups将cpu和内存之类的资源独立分配给每个docker容器
6、交互式shell