当前位置: 首页 > article >正文

从零开始,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.镜像----类似于安装包

镜像方式来源:

  • 自己的项目(自己创建镜像文件)
  • 第三方镜像来自于  https://hub.docker.com/  仓库

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的方式。


http://www.kler.cn/news/319767.html

相关文章:

  • LocalStorage
  • 力扣中等 33.搜索旋转排序数组
  • MySQL中的函数简单总结,以及TCL语句的简单讲解
  • 三范式,面试重点
  • 食品检测与分类系统源码分享
  • 18-pg内核之日志管理器(六)checkpoint
  • 密码管理器介绍
  • 学习篇 | Ollama 安装、运行大模型(CPU 实操版)
  • 第二十节:学习Redis缓存数据库实现增删改查(自学Spring boot 3.x的第五天)
  • uniApp 解决uniapp三方地图获取位置接口的请求次数限制问题,分别提供 Android 和 iOS 的实现方法(原生插件获取)
  • 宠物智能化听诊器的健康管理!
  • BOE(京东方)携多场景物联网创新应用亮相2024服贸会 “屏之物联”赋能数字经济
  • 深度学习:常见损失函数简介--名称、作用和用法
  • C Primer Plus 第7章——第二篇
  • 渗透测试工具 sqlmap 基础教程
  • Linux Shell: 使用 Expect 自动化 SCP 和 SSH 连接的 Shell 脚本详解
  • 模板初阶(C++)
  • 适合二开的web组态软件
  • Redis入门介绍
  • JAVA大学期末考试真题(带答案)
  • C++(9.23)
  • Profinet通讯电能计量装置 功能介绍
  • 智慧体育馆可视化:实时监控与智能管理
  • 滑动窗口算法第一弹(长度最小的子数组,无重复字符的最长子串 最大连续1的个数III)
  • C++: 继承
  • grafana 使用常见问题
  • Unity数据持久化4——2进制
  • Flink的反压机制:底层原理、产生原因、排查思路与解决方案
  • MySQL高阶1949-坚定地友谊
  • 查询最近正在执行的sql(DM8 : 达梦数据库)