Docker深度解析:掌握容器技术的核心秘密

简介与概述:

  1. Docker 是一个开源的应用容器引擎,基于 Go 语言,并遵循 Apache 2.0 协议开源。Docker 可以让开发者打包他们的引用以及依赖包一个轻量、可移植的容器中,然后发发布到任何流行的 Linux 机器上,也可以实现虚拟化
  2. Docker 的主要目标是 "build,ship and run app,anywhere",也就是说通过对应用程序组件的套装,分发、部署、运行等声明周期管理。使用用户的 app(也可以是一个 web 应用程序或者数据库应用等) 及其运行环境能够做到 "一次封装到处运行"
  3. Linux 容器技术的出现解决了这个问题。而 Docker 就是基于它的基础上发展过来的。将应用运行到 docker 容器上面,而 docker 容器在任何操作上都是一致的,这就是实现跨平台服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作
  4. 容器是完全使用沙箱机制,互相之间不会有任何接口(类似 iphone 的 app),更重要的是容器性能开销极低
  5. Docker 从 17.03 版本之后分为 CE(Community Edition:社区版)和 EE(Enterprise Edition:企业版),我们使用社区版本即可
  6. Docker 实际上就是一个虚拟化轻量级 linux 服务器,可以解决我们在开发环境中运行配置问题

为什么使用Docker:

  1. Docker:虚拟化容器技术
  2. Docker 主要解决了我们开发环境配置迁移问题
  3. 当我们开发了一个 javaweb 项目,需要依赖很多环境配置,比如:Tomcat、JDK、Nginx、Redis 环境等
  4. 本地需要安装这些环境,再打成 war 包给运维部署在 linux 服务器,运维人员也需要再 linux 服务器上安装这些环境
  5. 但是有时候可能会发生些问题:在本地运行环境没问题,但是打包到 Linux 服务器上运行总是遇到很多错误,大多数是一些版本冲突影响的
  6. 所以在这时候我们就可以使用 docker 部署和安装软件就非常方便,直接将该 SpringBoot 项目部署成一个镜像文件,镜像文件中包含 jdk 版本 tomcat 版本等,直接部署 linux 即可,减少依赖冲突概率

Docker 的三大核心要素:

  1. 仓库(Repository):
    1. 仓库是 Docker 用来存储镜像的地方,类似于 Windows 的软件管家
    2. Docker Hub 是 Docker 官方提供的公共仓库,用户可以在上面查找、下载和分享镜像。同时企业也可以搭建自己的私有仓库来存储和管理镜像
    3. 通过仓库,用户可以轻松的获取到其他人或组织创建好的 Docker 镜像,从而快速的部署和运行应用程序
  2. 镜像(Image):
    1. 镜像是 Docker 的核心组件之一,它是一个只读的文件系统,包含了运行某个应用所需要的所有代码、运行时环境、库、配置文件等。类似于安装包

    2. 镜像可以通过 Dockerfile 来定义,Dockerfile 是一个文本文件,其中包含了构建镜像所需要的指令和配置

    3. 通过 Dockerfile,用户可以定义应用程序的依赖、环境变量、工作目录等,然后使用 Docker 命令来构建镜像

    4. 一旦镜像构建完成,他就可以被推送到仓库中供他人使用,也可以被用来创建容器

  3. 容器(Container):
    1. 容器是 Docker 的另一个核心组件,它是镜像的一个可运行实例
    2. 当使用 Docker 命令从镜像创建容器时,Docker 会在宿主机上分配一定的资源(如 CPU、内存、磁盘等) 给容器,用户可以轻松部署、升级和管理应用程序,而无需关心底层操作系统的细节
  4. 总结:
    1. 仓库是 Docker 镜像的存储和分享平台
    2. 镜像是包含应用程序及其运行环境的只读文件系统
    3. 容器是镜像的可运行的实例,它在隔离的环境中运行应用程序

使用Docker 的好处:

  1. 简化配置,安装创建非常的方便
  2. 代码流水线(Code Pipeline)管理,传统项目部署可能需要经过很多环节,容易产生版本的依赖冲突问题,Docker 给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少
  3. Devops 开发与运维一体化减少沟通的成本(docker 或者是 k8s 实现)
  4. 虚拟技术,快速部署
  5. 弹性扩容

应用场景:

  1. Web 应用的自动化部署打包和发布
  2. 自动化测试和持续集成、发布
  3. 在服务型环境中部署和调整数据库或其他后台应用
  4. 从编译或者展现现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境

Docker 和虚拟机的区别:

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

    Docker官网:

    1. Docker Docs

    2. Docker: Accelerated Container Application Development

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值