一、Docker 简介
前言:
本课程需要Linux基础,asp.net core/mvc/webapi 等基础开发知识,2-5年以上的开发经验。
市场上很多docker 课程对于.net 程序员都不是特别友好,虽然Docker是一款致力于云原生开发与开发平台无关的容器化技术,但市场上大部分的教程案例都是以Java为例。本人刚好身兼两门开发技术,在本课程中会以Java与.Net Core 两种开发语言为大家进行案例展示。
-
为了跳槽加薪,这个是最现实的问题
-
解决环境差异,安装麻烦问题
从搬家到搬楼的区别,再也不用说我这人认床啦。Docker 可以将所有依赖的环境一键打包成镜像,现在就算是来了几十台服务器也不用担心环境部署问题了。
2.什么是Docker
Docker是基于Go语言实现的云开源项目。简单说就是一个虚拟化容器,容器中内置了一简化版的linux系统。
( Hypervisor来负责创建虚拟机 )
Hypervisor,又称虚拟机监视器(英语:virtual machine monitor,缩写为 VMM),是用来建立与执行
被Hypervisor用来执行一个或多个虚拟机器的电脑称为主体机器(host machine),这些虚拟机器则称为客体机器(guest machine)。hypervisor提供虚拟的作业平台来执行客体操作系统(guest operating systems),负责管理其他客体操作系统的执行阶段;这些客体操作系统,共同分享虚拟化后的硬件
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。
为什么不使用虚拟机
1、启动速度
启动虚拟机需要先启动虚拟机的操作系统,再启动应用,这个过程非常慢;
而启动 Docker 相当于启动宿主操作系统上的一个进程。
2、占用资源
虚拟机是一个完整的操作系统,需要占用大量的磁盘、内存和 CPU 资源,一台机器只能开启几十个的虚拟机。而 Docker 只是一个进程,只需要将应用以及相关的组件打包,在运行时占用很少的资源,一台机器可以开启成千上万个 Docker。
3、隔离性
与虚拟机相比,docker隔离性更弱,docker属于进程之间的隔离,虚拟机可实现系统级别隔离。
4、安全性
docker的安全性也更弱。Docker的租户root和宿主机root等同,一旦容器内的用户从普通用户权限提升为root权限,它就直接具备了宿主机的root权限,进而可进行无限制的操作。虚拟机租户root权限和宿主机的root虚拟机权限是分离的,并且虚拟机利用如Intel的VT-d和VT-x的ring-1硬件隔离技术,这种隔离技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离,这使得容器容易受到攻击
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为MB | 一般为GB |
性能 | 接近原生 | 弱 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
3.Docker的作用
-
更快速的应用交付和部署(CI/CD)
-
更便捷的升级和扩缩容
-
更简单的系统运维
-
更高效的计算资源利用
4. Docker 网站
-
Docker官方英文资源:
Docker Hub: https://hub.docker.com/
Docker中文资源:
-
配套视频链接:全网首发java/.net双案例Docker精品课程,Docker 进阶教程(双语言双案例助力教学)-已完结_哔哩哔哩_bilibili