1.什么是docker
- We have a complete container solution for you - no matter who you are and where you are on your containerization journey.
- 翻译: 我们为你提供了一个完整的容器解决方案,不管你是谁,不管你在哪,你都可以开始容器的的旅程。
- 官方定义: docker是一个容器技术。
2.docker的优势
(1)一致的运行环境,更轻松迁移 这里我们拿java Web应用程序举例,我们一个java Web应用程序涉及很多东西,比如jdk、tomcat、mysql等软件环境。当这些其中某一项版本不一致的时候,可能就会导致应用程序跑不起来这种情况。Docker则将程序以及使用软件环境直接打包在一起,无论在那个机器上保证了环境一致。 常见的问题:在开发的时候,在本机测试环境可以跑,生产环境跑不起来
(2)对进程进行封装隔离,容器与容器之间互不影响,更高效的利用系统资源。------->容器与容器之间是进程级别的隔离。 如果你的程序重要性不是特别高的话,公司基本上不可能让你的程序独享一台服务器的,这时候你的服务器就会跟公司其他人的程序共享一台服务器,所以不可避免地就会受到其他程序的干扰,导致自己的程序出现问题。Docker就很好解决了环境隔离的问题,别人程序不会影响到自己的程序。
(3)通过镜像复制N多个环境一致容器。让同一个项目能够轻松在多台服务器里进行部署 在没有Docker的情况下,要在几天内部署几十台服务器,这对运维来说是一件非常折磨人的事,而且每台服务器的环境还不一定一样,就会出现各种问题,最后部署地头皮发麻。用Docker的话,我只需要将程序打包到镜像,你要多少台服务,我就给力跑多少容器,极大地提高了部署效率。
3.docker和虚拟机区别
Docker是不携带操作系统的,所以Docker的应用就非常的轻巧。另外在调用宿主机的CPU、磁盘等等这些资源的时候,拿内存举例,虚拟机是利用Hypervisor去虚拟化内存,整个调用过程是虚拟内存->虚拟物理内存->真正物理内存,但是Docker是利用Docker Engine去调用宿主的的资源,这时候过程是虚拟内存->真正物理内存。
| 传统虚拟机 | Docker容器 |
---|
磁盘占用 | 几个GB到几十个GB左右 | 几十MB到几百MB左右 | CPU内存占用 | 虚拟操作系统非常占用CPU和内存 | Docker引擎占用极低 | 启动速度 | (从开机到运行项目)几分钟 | (从开启容器到运行项目)几秒 | 安装管理 | 需要专门的运维技术 | 安装、管理方便 | 应用部署 | 每次部署都费时费力 | 从第二次部署开始轻松简捷 | 耦合性 | 多个应用服务安装到一起,容易互相影响 | 每个应用服务一个容器,达成隔离 | 系统依赖 | 无 | 需求相同或相似的内核,目前推荐是Linux |
|