docker 第2章 什么是docker docker 第2章 什么是docker

2023-02-09

一、什么是 Docker

“Docker” 一词指代多种事物,包括开源社区项目、开源项目使用的工具、主导支持此类项目的公司 Docker Inc. 以及该公司官方支持的工具。技术产品和公司使用同一名称,的确让人有点困惑。

我们来简单说明一下:

IT 软件中所说的 “Docker” ,是指容器化技术,用于支持创建和使用 Linux 容器。

开源 Docker 社区致力于改进这类技术,并免费提供给所有用户,使之获益。

Docker Inc. 公司凭借 Docker 社区产品起家,它主要负责提升社区版本的安全性,并将改进后的版本与更广泛的技术社区分享。此外,它还专门对这些技术产品进行完善和安全固化,以服务于企业客户。

借助 Docker ,您可将容器当做重量轻、模块化的虚拟机使用。同时,您还将获得高度的灵活性,从而实现对容器的高效创建、部署及复制,并能将其从一个环境顺利迁移至另一个环境。

二、Docker 如何工作

Docker 技术使用 Linux 内核和内核功能(例如 Cgroups 和 namespaces)来分隔进程,以便各进程相互独立运行。

这种独立性正是采用容器的目的所在;它可以独立运行多种进程、多个应用程序,更加充分地发挥基础设施的作用,同时保持各个独立系统的安全性。

容器工具(包括 Docker)可提供基于镜像的部署模式。这使得它能够轻松跨多种环境,与其依赖程序共享应用或服务组。Docker 还可在这一容器环境中自动部署应用程序(或者合并多种流程,以构建单个应用程序)。

此外,由于这些工具基于 Linux 容器构建,使得 Docker 既易于使用,又别具一格 —— 它可为用户提供前所未有的高度应用程访问权限、快速部署以及版本控制和分发能力。

三、Docker 与传统的 Linux 容器

Docker 技术是否与传统的 Linux 容器相同?否。

Docker 技术最初是基于 LXC 技术构建(大多数人都会将这一技术与“传统的” Linux 容器联系在一起),但后来它逐渐摆脱了对这种技术的依赖。

就轻量级 虚拟化 这一功能来看,LXC 非常有用,但它无法提供出色的开发人员或用户体验。除了运行容器之外,Docker 技术还具备其他多项功能,包括简化用于构建容器、传输镜像以及控制镜像版本的流程。

传统的 Linux 容器使用 init 系统来管理多种进程。这意味着,所有应用程序都作为一个整体运行。与此相反,Docker 技术鼓励应用程序各自独立运行其进程,并提供相应工具以实现这一功能。这种精细化运作模式自有其优势。

四、Docker 跟普通虚拟机的对比

  • 跨平台

    • 普通虚拟机:通常只能在桌面级系统运行,例如 Windows/Mac,无法在不带图形界面的服务器上运行

    • Docker:支持的系统非常多,各类 windows 和 Linux 都支持

  • 性能

    • 普通虚拟机:性能损耗大,内存占用高,因为是把整个完整系统都虚拟出来了

    • Docker:性能好,只虚拟软件所需运行环境,最大化减少没用的配置

  • 自动化

    • 普通虚拟机:需要手动安装所有东西

    • Docker:一个命令就可以自动部署好所需环境

  • 稳定性

    • 普通虚拟机:稳定性不高,不同系统差异大

    • Docker:稳定性好,不同系统都一样部署方式

  • 为什么 Docker 会比 VM 虚拟机快

    • docker 有着比虚拟机更少的抽象层:由于 docker 不需要 Hypervisor (虚拟机)实现硬件资源虚拟化,运行在 docker 容器上的程序直接使用的都是实际物理机的硬件资源。因此在 CPU、内存利用率上 docker 将会在效率上有明显优势。

    • docker 利用的是宿主机的内核,而不需要加载操作系统 OS 内核:当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载 OS,返回新建过程是分钟级别的。而 docker 由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker 容器只需要几秒钟。

五、Docker的目标

Docker 是基于 Go 语言实现的云开源项目

docker 的主要目标是“Build,Ship and Run any App,Angwhere”,构建,运输,处处运行

  • 构建:做一个 docker 镜像

  • 运输:docker pull

  • 运行:启动一个容器

每一个容器,他都有自己的文件系统 rootfs

打包、分发、部署

  • 打包:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包

  • 分发:你可以把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装

  • 部署:拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一摸一样的运行环境,不管是在 Windows/Mac/Linux

六、Docker 部署的优势

常规应用开发部署方式:自己在 Windows 上开发、测试 --> 到 Linux 服务器配置运行环境部署。

问题:我机器上跑都没问题,怎么到服务器就各种问题了

用 Docker 开发部署流程:自己在 Windows 上开发、测试 --> 打包为 Docker 镜像(可以理解为软件安装包) --> 各种服务器上只需要一个命令部署好

优点:确保了不同机器上跑都是一致的运行环境,不会出现我机器上跑正常,你机器跑就有问题的情况。

七、Docker 通常用来做什么

  • 应用分发、部署,方便传播给他人安装。特别是开源软件和提供私有部署的应用

  • 快速安装测试/学习软件,用完就丢(类似小程序),不把时间浪费在安装软件上。例如 Redis / MongoDB / ElasticSearch / ELK

  • 多个版本软件共存,不污染系统,例如 Python2、Python3,Redis4.0,Redis5.0

  • Windows 上体验/学习各种 Linux 系统

八、重要概念:镜像、容器

  • 镜像(类):可以理解为软件安装包,可以方便的进行传播和安装。

  • 容器(对象):软件安装后的状态,每个软件运行环境都是独立的、隔离的,称之为容器。

  • 仓库(Repository):是集中存放镜像文件的场所。

    • 类似于 Maven仓库,存放各种jar包的地方;

    • github仓库,存放各种git项目的地方;

    • Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。 仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

    • 最大的公开仓库是 Docker Hub(https://hub.docker.com/), 存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等。

九、docker 的版本

  • Docker 从 2013 年 3 月 20 日发布 Docker0.1,到现在已经发布了多个版本

  • 从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE

  • Docker CE 即社区免费版,可永久免费使用

  • Docker EE 即企业版,功能更全,更强调安全,但需付费使用

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开微信扫一扫,即可进行扫码打赏哦

阅读 344

docker文章

带到手机上看