从零开始,Docker进阶之路(一):Docker基础

一、简介与概述

1.Docker是一个开源应用容器引擎,基于Go语言并遵从Apache2.0协议开源。

Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。

2.Docker的主要目标是通过对应用的程序组件的封装,分发,部署,运行等生命周期的管理 ,使用户的app(也可以是一个Web应用程序或者数据库应用等)及其环境能够做到"一次封装,到处运行"

3.将应用运行到Docker容器上面,而Docker容器在任何操作系统上都是一致的,这就是实现跨平台跨服务器。只需一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

4.容器是完全使用沙箱机制 ,相互之间不会有任何接口,更重要的是容器性能开销极低

总结:Docker实际上就是一个虚拟化轻量级Linux服务器,可以解决我们在开发环境中运行配置问题。

二、为什么需要使用Docker

Docker : 虚拟化容器技术

Docker主要解决我们开发环境配置迁移的问题

下面举出一个示例

  • 我们现在开发了一个JavaWeb项目,需要依赖很多的环境配置,比如Tomcat、JDK、Nginx、Redis环境等等
  • 本地需要安装这些环境,再打war包运维部署在Linux服务器,运维人员也需要在Linux服务器上安装这些环境
  • 但是有时候会发生这些问题:我在本地运行环境没有问题,但是打包到Linux服务器上总是遇到很多错误,大多数由于一些版本冲突影响。
  • 所以在这时候我们就可以使用Docker安装和部署软件,直接将springboot项目制作成一个镜像文件,镜像文件中包含JDK版本等等信息,就可以减少依赖冲突的概率,直接部署到Linux服务器。

三、使用Docker的好处

1.简化配置 安装创建非常的方便

2.代码流水线(Code Pipeline)管理 传统项目部署可能需要经过许多环节,容易产生版本的依赖冲突问题,Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少。

3.Devops开发与运维一体化减少沟通的成本

4.虚拟技术、快速部署、弹性扩容

四、Docker核心三要素

1.仓库----专门存放镜像文件,类似于app软件市场

2.镜像----类似于安装包

镜像方式来源:

3.容器----运行我们的镜像文件 自己独立的ip和网络信息化 虚拟化出一个轻量级的Linux操作系统精简版本

五、应用场景

1.web应用的自动化打包和发布。

2.自动化测试和持续集成、发布

3.在服务型环境中部署和调整数据库或其他后台应用。

4.从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的Paas环境

六、容器与虚拟机的区别

什么是虚拟机:在一台物理机器上,利用虚拟化技术,虚拟出来多个操作系统,每个操作系统之间是隔离的。

从下到上理解:

从下往上看,最下面的一层是物理机,可以是服务器;往上一层是主机操作系统。

再往上就是虚拟机软件了,比如我们常用的VirtualBox、VMWare,它们的作用是模拟计算机硬件;继续向上就是虚拟机模拟出来的操作系统了;在虚拟的操作系统中,安装所需的软件、组件等。最后就是具体的应用了。

最下面两层,概念同上。

再往上,可以看做是Docker容器的管理器。

依赖和应用都被打包成了Docker镜像。例如,JDK、Tomcat、应用都被打包在了一起,运行在Docker容器里,容器与容器间是隔离的。

七、Docker和虚拟机的区别

1.从两者的架构图上看,虚拟机是在硬件级别进行虚拟化,模拟硬件搭建操作系统;而Docker是在操作系统的层面虚拟化,复用操作系统,运行Docker容器。

2.Docker的速度很快,秒级,而虚拟机的速度通常要按分钟计算。

3.Docker所用的资源更少,性能更高。同样一个物理机器,Docker运行的镜像数量远多于虚拟机的数量。

4.虚拟机实现了操作系统之间的隔离,Docker是进程之间的隔离,虚拟机隔离级别更高、安全性方面也更强。

5.虚拟机和Docker各有优势,不存在谁替代掉谁的问题,很多企业都采用物理机上做虚拟机,虚拟机中跑Docker的方式。

相关推荐
用户03284722207017 小时前
如何搭建本地yum源(上)
运维
武子康19 小时前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn864 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉4 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造