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,看这篇就对了!(下)
|
1月前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
223 93
|
4天前
|
网络协议 API Docker
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
36 23
|
4天前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
90 15
|
2月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
296 78
|
1月前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
156 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
2月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
2月前
|
搜索推荐 安全 数据安全/隐私保护
7 个最能提高生产力的 Docker 容器
7 个最能提高生产力的 Docker 容器
193 35
|
1月前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
62 17