Docker容器介绍

简介与概述

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

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

Docker的主要目标就是“Build,Ship and run any app,anywhere”,也就是说通过对应用程序组件的封装,分发,部署,运行等生命周期的管理,使用户的app(也可以是一个web应用程序或者数据库应用)及其运行环境能够做到“一次封装,到处运行”。

Linux容器技术的出现解决了这个问题,而docker就是基于他的基础上发展过来的,将应用程序运行到docker上,而docker容器在任何操作系统上都是一致的,这就是实现了跨平台,跨服务器,只要一次配置之后,就可以在其他机器上运行,大大简化了操作

容器是完全的沙箱机制,相互之间不会有任何的接口(类似于手机上的app),更重要的是,容器的性能开销极低

Docker从17.03之后分为CE(Community Edition社区版)和EE(Enterprise Edition企业版),我们使用社区版就可以了

Docker实际上就是一个虚拟化的,轻量级的Linux服务器,可以解决我们在开发过程中的配置问题。

为什么要使用Docker

docker是基于虚拟化容器技术实现的,docker主要是解决我们在开发过程中的配置迁移问题

例如:

1,我们开发了一个JavaWEB项目,需要很多的环境配置,比如:tomcat,jdk环境,nginx,redis等环境信息

2,本地需要安装这些环境,tomcat,jdk,nginx,redis,并对其进行配置,在打war包给运维部署在linux服务器上,运维人员也需要在linux服务器上安装这些环境并做相关配置

3,但是有时候还是会出现各种问题:在本地环境运行没有问题,但是打包到Linux服务器上运行总是各种报错,大多数可能是一些版本冲突或者配置问题

4,这个时候用docker部署和安装软件的话就非常方便了,直接将SpringBoot项目制作成一个镜像文件,镜像文件中包含jdk版本,tomcat信息,直接部署linux即可,减少环境问题

看个例子:

如果在linux中安装mysql,请看相关教程:https://blog.csdn.net/qq_42097051/article/details/113726893

同时,mysql安装也很容易发生版本冲突的问题。再对比docker安装mysql

docker pull mysql:5.7 
docker run --name mysql3308 -e MYSQL_ROOT_PASSWORD=root -p 3308:3306 mysql:5.7

这样就可以很好的解决运行环境配置问题,因为镜像文件底层封装好了

使用Docker的好处

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

2,代码流水线管理(Code pipeline),传统的项目部署可能需要经过很多的环节,并且可能会产生依赖冲突,配置不一致,版本冲突等问题,docker给应用提供了一个从开发到线上均一致的环境,让代码的流水线变得简单不少

3,Devops开发与运维一体化减少成本

4,虚拟技术可以进行快速部署

5,可以支持弹性扩容

应用场景

1,Web应用的自动化打包与发布

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

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

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

容器与虚拟机的区别

虚拟机:

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

从下到上理解上图

  • 最下面一层是物理机(Infrastructure),可以是一台服务器或者一个PC
  • 电脑上需要安装操作系统(Host Operating System),比如我们安装了Win10的操作系统
  • 在往上就是虚拟机软件(Hypervisor),比如Vmware Workstation,他的作用就是用来模拟计算机硬件
  • 继续往上就是虚拟机模拟出来的操作系统(Guest OS)
  • 在虚拟的操作系统中,安装所需要的软件,组件(Bins、Libs)。比如安装jdk,tomcat等
  • 最后就是具体的应用了(App),例如部署到tomcat中

Docker

docker是开源的应用容器引擎

依然是从上往下看:

  • 最下面两层,概念同上
  • 继续往上,可以看做docker容器的管理器
  • 依赖和应用都被打包成了Docker镜像,例如:jdk,tomcat,应用都被打包在了一起,运行在docker容器中,容器和容器间是隔离的

docker和虚拟机的区别:

  1. 从两者架构图上看,虚拟机是在硬件级别进行虚拟化,模拟硬件搭建操作系统,而docker是在操作系统层面进行虚拟化,复用操作系统,运行Docker容器
  2. Docker的速度很快,秒级,而虚拟机的速度通常以分钟计算
  3. Docker所用的资源更少,性能更高,同样一个物理机,Docker运行的镜像数量远多于虚拟机的数量
  4. 虚拟机实现了操作系统之间的隔离,Docker是进程之间的隔离,虚拟机的隔离级别更高,安全性方面也更强
  5. 虚拟机和Docker各有优势,不存在谁替代谁的问题,很多企业都采用物理机上做虚拟机,虚拟机上跑docker

特性

容器

虚拟机

启动速度

秒级

分钟级别

硬盘使用

一般为MB

一般GB

性能

接近原生

弱于

系统支持量

单机支持上千个容器

一般几十个

隔离性

完全隔离

完全隔离

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值