什么是Docker?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
学习docker与其他技术是一样的,从基础出发,由浅入深,熟练掌握docker,成为成熟的开发人员,才能更受大厂青睐。
Docker 架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。
Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。
特性
在docker的网站上提到了docker的典型场景:
- Automating the packaging and deployment of applications(使应用的打包与部署自动化)
- Creation of lightweight, private PAAS environments(创建轻量、私密的PAAS环境)
- Automated testing and continuous integration/deployment(实现自动化测试和持续的集成/部署)
- Deploying and scaling web apps, databases and backend services(部署与扩展webapp、数据库和后台服务)
有一份docker学习宝典,可以说很详细,在这分享给有需要的朋友!由于篇幅原因,为了不影响阅读在这就展示部分内容截图,有需要这份已经整理成完整文档的docker学习宝典的伙伴多多支持一下。
第一趴:Docker基础入门
1、初始Docker与容器
什么是Docker?为什么要使用Docker?Docker与虚拟化
2、Docker核心概念和安装配置
核心概念+安装Docker引擎+配置Docker服务+推荐实践环境
3、Docker镜像
Docker镜像就是一个Linux的文件系统(Root FileSystem),这个文件系统里面包含可以运行在Linux内核的程序以及相应的数据。
4、操作Docker容器
容器与镜像的关系,就如同面向编程中对象与类之间的关系。
因为容器是通过镜像来创建的,所以必须先有镜像才能创建容器,而生成的容器是一个独立于宿主机的隔离进程,并且有属于容器自己的网络和命名空间。
5、访问Docker仓库
仓库(Repository)是集中存储镜像的地方,这里有个概念要区分一下,那就是仓库与仓库服务器(Registry)是两回事,像我们上面说的Docker Hub,就是Docker官方提供的一个仓库服务器,不过其实有时候我们不太需要太过区分这两个概念。
6、Docker数据管理
7、端口映射与容器互联(端口映射实现容器访问+互联机制实现便捷互访)
第二趴:Docker高级技能(实战)
1、操作系统解析
2、为镜像添加SSH服务,深度解析
3、Web服务与应用(Apache+Nginx+Tomcat+Jetty+Lamp+持续开发与管理)
4、数据库应用(MySQL+Oracle Database XE+MongoDB+Redis+Cassandra)
5、分布式处理与大数据库平台(Hadoop+Spark+Storm+Elasticsearch)
6、编程开发介绍
7、容器与云服务(公有云容服务器+容器云服务+阿里云容器服务+时速云介绍)
第三趴:Docker进阶技能(玩转技术)
1、核心实现技术(基本架构+命名空间+控制组+联合文件系统+Linux网络虚拟化)
2、配置私有仓库(安装Dokcer Registry+配置TLS证书+管理访问权限+配置Registry+批量管理镜像+使用通知系统)
3、安全防护与配置(命名空间隔离的安全+控制组资源控制的安全+内核能力机制+Docker服务端的防护+更多安全特性的使用+使用第三方检测工具)
4、高级网络功能
第四趴:开源项目
1.Etcd——高可用的键值数据库
2.Docker三剑客之Compose
3.Docker三剑客之Swarm
4.Mesos——优秀的集群资源调度平台
5.Kubernetes——生产级容器集群平台
6.其他相关项目介绍
总结
如果你还在问“为什么要学习docker”?那作为一名开发人员,实属不太合格了。掌握更多更流行的技术,是作为一名Java工程师,对自己最基础的要求。
有需要这份已经整理成完整文档的docker学习宝典的小伙伴多多支持一下吧。