《Docker技术革命:从虚拟机到容器化,全面解析Docker的原理与应用-上篇》(一)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 《Docker技术革命:从虚拟机到容器化,全面解析Docker的原理与应用-上篇》(一)

Docker为什么会出现

对于互联网公司的产品研发,通常有两个环境,一个是开发环境,一个是上线环境。

产品从研发到上线,两个环境的应用配置要对齐,这个时候容易出现这样的问题:

这段代码在我的电脑上能运行,在你的电脑上不能运行了?这个时候开发和运维就会因为这个问题陷入焦灼。

后端程序员需要掌握:

  • 开发
  • 运维
  • 架构

这个时候开发运维一体化了,所以要学习Docker了,要去把运维的工作也干了!运维的工作难度,复杂度主要体现在环境配置这个方面,那我们这帮程序员要去卷运维该怎么卷?

环境的配置十分繁琐,每一个机器都要部署环境(集群Redis、ES、Hadoop)耗时费力。

过去程序员发布一个jar包出来,运维工程师就去配置环境,把这个jar包跑在服务器上。现在的情况变成了:程序员发布jar包的时候,把环境也带上了,把项目+环境一起打包。

总结

传统:开发jar包,运维来做。

  • Java–apk–发布(应用商店)–张三使用apk–安装即可

现在:开发打包部署上线,一套流程做完。

  • Java–jar(环境)–打包项目带上环境(镜像)–(Docker仓库:商店)—下载我们发布的镜像—直接运行即可,

Docker的思想

Docker 的思想来源于集装箱!Docker的核心思想是: 隔离

打包箱子,每个箱子是互相隔离的!

Docker可以利用隔离机制将服务器利用到极致。

Docker历史

Docker出现之前还是虚拟机的天下,虚拟机技术就是我们在VM中用Linux编程搞环境那套东西。但是后来出现了容器技术,这个容器技术就是我们今天谈的Docker!

Docker 的出现是为了解决虚拟机技术带来的笨重!

总结

虚拟机用的是虚拟化技术,虚拟软件、硬件需要的环境。Docker用的是容器技术,但这种容器技术也是虚拟化技术,只是一种轻量级的虚拟化技术罢了。

传统的虚拟机搞隔离要开很多个虚拟机才能实现分布式集群。这是一种非常笨重的方法。

Docker用了一个叫镜像的东西,把应用需要的环境,比如jdk+mysql等等环境安装打包到镜像里面,你直接运行镜像即可,非常快,非常小巧方便。

Docker能干嘛

虚拟机技术

之前的虚拟机技术:

虚拟机技术的缺点
  • 资源占用多
  • 冗余步骤多
  • 启动很慢

容器化技术

现在的容器化技术:

容器化技术不是模拟一个完整的操作系统。

Docker和虚拟机技术的区别

比较docker和虚拟机技术的不同

  • 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件。
  • 容器内的应用直接运行在宿主机的内容。容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了。
  • 每个容器之间都是互相隔离的,每个容器内都有一个属于自己的文件系统,互不影响。

DevOps(开发、运维)

应用更快速的交付和部署

传统:

  • 一堆帮助文档、安装程序

Docker:

  • 打包镜像发布测试、一键运行

更便捷的升级和扩容

使用了Docker之后,我们部署应用就像搭积木一样!

项目打包为一个镜像,扩展服务器A!B!

更简单的系统运维

在容器简化之后,我们的开发,测试环境都是高度一致的。

更高效的计算资源利用

Docker是内核级别的虚拟化,可以再一个物理机上可以运行很多容器实例!服务器的性能可以被利用到极致!

Docker概念

Docker的基本组成

镜像(image)

Docker镜像好比是一个模板,可以通过这个模板来创建容器服务,Tomcat镜像===>run===>Tomcat01容器(提供服务),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。

容器(container)

Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。

启动、停止、删除、基本命令!

目前就可以把容器理解成一个简易的Linux系统

仓科(repository)

仓库就是存放镜像的地方!仓库分为公有仓库和私有仓库!

安装Docker

卸载旧版本

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

需要的安装包

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

设置镜像仓库

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

安装docker

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

启动docker

$ sudo systemctl start docker
验证docker
docker version

测试Helloworld

docker run hello-world

Helloworld执行流程

上面的执行Helloworld流程如下:

查看镜像文件

docker images

阿里云镜像加速

1、登录阿里云官网

用自己的手机号进行注册即可。

2、找到镜像加速器配置

这里选择CentOS!

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://kjrexsxz.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

《Docker技术革命:从虚拟机到容器化,全面解析Docker的原理与应用-上篇》(二)+https://developer.aliyun.com/article/1625019

目录
相关文章
|
12天前
|
运维 持续交付 虚拟化
深入解析Docker容器化技术的核心原理
深入解析Docker容器化技术的核心原理
35 1
|
2月前
|
存储 应用服务中间件 Linux
《Docker技术革命:从虚拟机到容器化,全面解析Docker的原理与应用-上篇》(二)
《Docker技术革命:从虚拟机到容器化,全面解析Docker的原理与应用-上篇》(二)
15 1
|
7月前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
4月前
|
Linux iOS开发 Docker
Docker技术概论(2):Docker环境的搭建
Docker技术概论(2):Docker环境的搭建
88 17
|
7月前
|
存储 Linux 调度
Ubantu docker学习笔记(五)容器底层技术
Ubantu docker学习笔记(五)容器底层技术
|
存储 持续交付 虚拟化
Docker 基础知识解析:容器与虚拟化的区别与优势
Docker 基础知识解析:容器与虚拟化的区别与优势
599 0
|
7月前
|
运维 Java 云计算
深入浅出:使用Docker容器化改进Java应用部署
在当前快速演变的软件开发领域,Docker作为一种开源的容器化技术,已经成为优化应用部署、实现快速交付和高效率运维的关键工具。本文将探讨如何利用Docker容器化技术来改进Java应用的部署流程。我们不仅会介绍Docker的基础知识,还会通过一个实际的Java应用示例,详细展示从创建Dockerfile到构建镜像,再到运行容器的整个过程。此外,文章还将探讨容器化带来的好处,如环境一致性、便捷的版本控制和简化的部署流程等,力求为读者提供一个清晰、易懂的指南,帮助他们在自己的项目中实现Docker容器化,从而提升开发和部署效率。
219 1
|
7月前
|
Java Linux 开发者
深入浅出:使用Docker容器化改善Java应用部署
在本篇文章中,我们探讨了Docker作为一种领先的容器化技术,如何为Java应用提供一个轻量级、可移植的运行环境,从而简化部署流程并提高开发效率。通过具体示例,我们将指导读者理解Docker的基本概念,展示如何创建一个Java应用的Docker镜像,并详细说明如何配置和运行容器。此外,我们还将讨论使用Docker的优势,包括环境一致性、便捷的版本控制和易于扩展等,以及如何克服在容器化过程中可能遇到的挑战。本文旨在为有意采用容器化技术改善Java应用部署流程的开发者提供一个全面而深入的指南。
222 0
|
7月前
|
存储 Linux 开发者
探索容器化技术:揭秘Docker的原理与应用
在当今快节奏的软件开发环境中,容器化技术成为了关键的工具。本文将深入探索Docker作为一种常见的容器化解决方案的原理与使用方法,并讨论其在现代应用开发中的重要性与优势。
|
7月前
|
存储 运维 Linux
探索容器化技术:Docker的原理与应用
在当今快节奏的软件开发环境中,容器化技术成为了一种重要的工具,其中最为流行和广泛使用的是Docker。本文将深入探讨Docker的原理和使用,包括容器化概念、镜像管理、容器编排等内容,帮助读者更好地理解和应用这项技术。
319 0