30分钟快速上手Docker,看这篇就对了!(上)

简介: 30分钟快速上手Docker,看这篇就对了!(上)

一、历史演化


1、演化史


image.png




2、物理机时代


2.1、图解


一个物理机上安装操作系统,然后直接运行我们的软件。也就是说你电脑上直接跑了一个软件,并没有开虚拟机什么的,资源极其浪费。


image.png


2.2、缺点


  • 部署慢


  • 成本高


虚拟机都不开,直接上物理机部署应用,那成本能不高嘛


  • 资源浪费


硬件资源没有合理利用


  • 不易迁移和增加机器


每次迁移都要重新安装一模一样的运行环境等


  • 受限于硬件


3、虚拟机时代


3.1、图解


一个物理机上虚拟化出来多个虚拟机,每个虚拟机上进行安装操作系统,然后在虚拟机上直接运行我们的软件。比如阿里云、腾讯云等云服务器都是虚拟机。


image.png


3.2、特点


  • 多部署


一个物理机上创建多个虚拟机,每个虚拟机的ip都不同,一个软件可以在不同虚拟机上进行部署。


  • 资源隔离


每个虚拟机都由独立分配的内存磁盘等硬件资源,通过Hypervisor分配。


  • 易扩展


随时随地都能在一个物理机上开出新的虚拟机。成本也低。


  • 成本相对较低


3.3、缺点


  • VM需要安装操作系统


假设我们的应用程序只有几KB,或者几十MB,但是却要在虚拟机上安装一个几百兆的操作系统来跑。


4、容器化时代


4.1、有什么用


看完了物理机时代和虚拟机时代后发现各有缺点,而容器化技术可以完美解决虚拟机时代的缺点。



或许你一定遇到过程序在我本地是正常的,为毛到了QA环境就GG了?或者本地和QA都测试通过了,为毛上线就GG了?这大多是因为环境不同所导致的,最简单的例子:本地和QA是jdk1.8,线上是1.6等等。容器化技术比如docker,开发者可以将安装环境和程序一起打包给运维,运维直接安装你这个打包的“脚本”即可,所有的环境都是你本地正常运行的。


如果没看懂就粗浅的理解为:你用shell命令写了个脚本,下载jdk,配置环境变量、下载tomcat、部署你的程序等等这一套流程,然后交给运维,运维直接sh xxx.sh就完事了,环境什么的都是你给的,不会出现环境不一致的情况。你肯定有疑问:我虚拟机上有jdk了,你给我的脚本里再安装jdk肯定不行啊,容器化技术可以让资源隔离,互不影响。


4.2、对比虚拟机时代


虚拟化技术是物理硬件的隔离,容器化技术是app层面的隔离,两者不冲突。往往容器化时代都是基于虚拟机基础之上做的资源隔离。它可以基于虚拟机的操作系统部署多服务,不再需要额外安装操作系。


4.3、特点


  • 标准化的迁移方式


那肯定啊,开发者将环境和程序打包给运维,运维直接执行就完事了。


  • 统一的参数配置


废话,包都是开发者给的,开发者难道把一个应用程序打两个不同的包给运维?


  • 自动化部署


  • 应用集群监控


  • 开发与运维之间的沟通桥梁


加粗了,自行体会。


二、什么是Docker?


Docker就是容器化技术的一种具体实现。基于Go语言开发。


加粗的一句话已经解释的明明白白了,不明白就等于没看懂上面的。


三、Docker的安装


基于Centos7的安装。


1、官方安装地址


https://docs.docker.com/engine/install/centos/


官方由于是国外的,所以不推荐,推荐下面的安装方式。


2、国内源安装


2.1、安装工具


sudo yum install -y yum-utils device-mapper-persistent-data lvm2


device-mapper-persistent-data lvm2是干嘛的?

docker要想数据存储就必须要安装这两个,这两个是为了docker做数据存储用的。


2.2、添加源为国内


sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


2.3、更新安装Docker-CE


sudo yum makecache fast
sudo yum -y install docker-ce


2.4、验证是否安装成功


sudo service docker start
docker version


2.5、先爽一把helloworld


好不容易安装完了,先爽一把helloworld。


docker pull hello-world
docker run hello-world



image.png



相关文章
|
Java Maven Docker
30分钟快速上手Docker,看这篇就对了!(中)
30分钟快速上手Docker,看这篇就对了!(中)
30分钟快速上手Docker,看这篇就对了!(中)
|
负载均衡 Java 应用服务中间件
30分钟快速上手Docker,看这篇就对了!(下)
30分钟快速上手Docker,看这篇就对了!(下)
30分钟快速上手Docker,看这篇就对了!(下)
|
6天前
|
存储 安全 数据安全/隐私保护
【Docker 专栏】Docker 容器化应用的备份与恢复策略
【5月更文挑战第9天】本文探讨了Docker容器化应用的备份与恢复策略,强调了备份在数据保护、业务连续性和合规要求中的关键作用。内容涵盖备份的重要性、内容及方法,推荐了Docker自带工具和第三方工具如Portainer、Velero。制定了备份策略,包括频率、存储位置和保留期限,并详细阐述了恢复流程及注意事项。文章还提及案例分析和未来发展趋势,强调了随着技术发展,备份与恢复策略将持续演进,以应对数字化时代的挑战。
【Docker 专栏】Docker 容器化应用的备份与恢复策略
|
6天前
|
监控 Kubernetes Docker
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
【5月更文挑战第9天】本文探讨了Docker容器中应用的健康检查与自动恢复,强调其对应用稳定性和系统性能的重要性。健康检查包括进程、端口和应用特定检查,而自动恢复则涉及重启容器和重新部署。Docker原生及第三方工具(如Kubernetes)提供了相关功能。配置检查需考虑检查频率、应用特性和监控告警。案例分析展示了实际操作,未来发展趋势将趋向更智能和高效的检查恢复机制。
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
|
1天前
|
Prometheus 监控 Cloud Native
构建高效稳定的Docker容器监控体系
【5月更文挑战第20天】 在微服务架构日益普及的今天,Docker作为其重要的实现技术之一,承载着大量应用的运行。然而,随之而来的是对于容器健康状态、资源使用情况以及性能指标的监控需求急剧增加。本文旨在探讨构建一个高效且稳定的Docker容器监控体系,不仅涵盖了监控工具的选择与配置,还详细阐述了监控数据的分析与处理流程。通过精心设计的监控策略和实时响应机制,我们能够确保系统的稳定性,并及时发现及处理潜在的问题。
|
4天前
|
Java 虚拟化 Docker
Docker简介及用途,为什么要使用Docker?Docker容器和虚拟机的区别
Docker简介及用途,为什么要使用Docker?Docker容器和虚拟机的区别
|
4天前
|
存储 Linux Docker
CentOS7修改Docker容器和镜像默认存储位置
CentOS7修改Docker容器和镜像默认存储位置
|
4天前
|
Linux Docker 容器
更改docker容器中的时间而不影响宿主机
更改docker容器中的时间而不影响宿主机
|
4天前
|
Ubuntu Linux Go
docker容器启动报错
docker容器启动报错解决
|
6天前
|
Ubuntu Docker 容器
docker容器保存和导入
docker容器保存和导入
37 0