Docker初始

什么是容器

容器是一种轻量级的虚拟化技术,用户将应用程序及其依赖打包成一个可移植的镜像,并运行在一个隔离环境中,容器技术在操作系统层面上实现了资源的隔离和限制,使得多个容器可以在同一台主机上共享操作系统内核,同时独立运行,互不干扰。这种技术允许开发者将应用及其依赖项打包在一起,形成一个独立、可移植的运行环境,从而在不同的环境中无缝运行。

  • **轻量级:**容器共享宿主机的内核,但每个容器都有自己的文件系统、进程空间、网络配置和资源分配,这使得容器在资源有限下进行运行
  • **隔离型:**容器提供了应用程序运行环境的隔离,确保不同应用之间的独立性,避免了相互干扰
  • **可移植性:**容器可以在任何支持容器技术的平台上运行,实现了快速部署,迁移和拓展。

什么是Docker

  • Docker是一组平台即服务(PaaS)的产品

  • 是一个轻量级的“虚拟机”

  • 在Linux容器里运行应用的开源工具

  • 基本原理

    • 隔离性 - 每个用户实例之间相互隔离, 互不影响。 硬件虚拟化方法的方案是VM;libcontainer的方案是容器,具体而言是namespace。其中的pid, net, ipc, mnt, uts 等将容器的进程, 网络, 消息, 文件系统和主机隔离开。
    • 可配额/可度量 - 每个用户实例可以按需提供其计算资源,所使用的资源可以被计量。硬件虚拟化方法因为虚拟了CPU和内存,可以方便实现;libcontainer则主要是利用cgroups来控制资源。cgroups 实现了对资源的配额和度量,提供了类似文件的接口。在 /cgroup目录下新建一个文件夹即可新建一个group,在此文件夹中新建task文件,并将pid写入该文件,即可实现对该进程的资源控制。
    • 移动性 - 用户的实例可以很方便地复制、移动和重建。硬件虚拟化方法通过snapshot和image来实现;Docker主要通过AUFS实现。AUFS (AnotherUnionFS) 是一种联合文件系统, 就是支持将不同目录挂载到同一个虚拟文件系统下的文件系统。它具有节省存储空间、快速部署、节省内存、升级方便、允许在不更改base-image的同时修改其目录中的文件的特点。
    • 安全性 - 这个讨论范围较大,这里强调是host主机的角度尽量保护容器。硬件虚拟化的方法因为虚拟化的水平比较高,用户进程都是在KVM等虚拟机中运行的;然而对于libcontainer, 其中运行的进程应当是事先静态编译完成的。用户提供的参数也是通过exec系统调用提供给用户进程。通常情况下容器中也没有长进程存在。
  • Docker平台组成

    • Docker守护进程(Docker daemon):Docker采用 C/S架构 [3]。Docker daemon 作为服务端接受来自客户端的请求 [4-5],并进行处理(创建、运行、分发容器) [4] [6]。

    • Docker客户端(Docker client):Docker 客户端则用于与 Docker 守护进程通信,发送命令以管理容器。Docker采用 C/S架构。客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。

    • Docker daemon一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon交互。

    • Docker镜像(Docker images):Docker 镜像是用于构建 Docker 容器的静态文件,它包含了应用程序运行所需的所有文件、依赖项和配置信息。Docker 镜像可以从 Docker Hub 或其他镜像仓库中获取,也可以通过 Dockerfile 自定义构建。

    • Docker容器(Docker container):Docker 容器是 Docker 镜像的运行实例,它包含了应用程序及其依赖项,并在隔离的环境中运行。每个容器都是一个独立的进程,拥有自己的文件系统、网络空间和进程空间。

    • Docker容器通过Docker镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

    • 基本架构示意

      Docker面向对象的编程
      容器对象
      镜像

Docker与虚拟机的区别

  • Docker和虚拟机是两种不同的虚拟化技术,它们在资源消耗、运行性能、应用场景、管理和监控、容器的隔离性、灵活性和扩展性等方面存在差异。Docker容器更加轻量级、高效、灵活和易于管理,而虚拟机提供了更好的隔离性和安全性。‌
  • 具体区别
    • **架构差异:**虚拟机是基于hypervisor实现的,模拟完整的虚拟硬件环境
      Docker是基于容器化技术
    • **隔离原理:**虚拟机通过模拟整个操作系统提供隔离环境,容器则使用‌Linux内核的namespace和cgroups功能实现进程隔离,共享宿主机的资源
    • **部署效率:**Docker采用镜像的方式,部署速度快,虚拟机则需要模拟整个操作系统
    • **启动速度:**Docker容器启动速度快,占用资源较少,虚拟机需要加载完整的操作系统和硬件模拟,启动速度慢
  • 应用场景
    • **Docker:**适用于需要自动化部署和扩展的应用程序
    • **虚拟机:**适用于需要隔离整个操作系统和更高安全性的场景

Docker的使用场景

  • 打包应用程序简化部署
  • 可脱离底层硬件随意迁移
  • 例:服务器从腾讯云迁移到阿里云

Docker核心概念

  • 镜像
    • 一个面相Docker容器引擎的只读模板
  • 容器
    • 从镜像创建的额运行实例
  • 仓库
    • 集中保存镜像的地方

CentOS安装Docker的两种方式

  • 使用CURL获得Docker的安装脚本进行安装
  • 使用YUM仓库来安装Docker
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Small Cow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值