1-Docker概述

1-Docker简述

Docker是什么

Docker是世界领先的软件容器平台。使用Go语言开发,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主机和其他隔离进程,因此也称为容器。

容器是什么

容器就是将软件打包成标准化单元,以用于开发、交付和部署。

  1. 容器镜像是轻量的、可执行的独立软件包。
  2. 容器化软件适用于Linux和Windows的应用,在任何环境都能够始终如一的运行。
  3. 容器赋予了软件的独立性。

通俗的来说,容器就是一个存放东西的地方,不同的容器之间互相隔离,互不干扰。一个容器内的程序运行好坏不会影响到其他的容器。

Linux容器

Linux发展出了与虚拟机不同的一种虚拟化技术:Linux容器(Linux Containers,缩写为LXC)。

Linux容器并不模拟一个完整的操作系统,而是对进程进行隔离,或者简单来说是在正常进程的外面套了一个保护层,对于容器里面的进程来说,他接触到的资源都是虚拟的。

由于容器是进程级别的,相比虚拟机就有很多优势。

  1. 启动快

    容器里面的应用,是底层系统的一个进程,而不是虚拟机内部的进程,因此启动容器就相当于启动本机的一个进程,而不是启动完整的操作系统。

  2. 资源占用少

    容器只占用需要的资源;而虚拟机是完整的操作系统,不可避免要占用所有资源。另外,多个容器可以共享资源,而虚拟机都是独享资源

  3. 体积小

    容器只包含用到的组件,而虚拟机是整个操作系统的打包

Docker思想

  1. 集装箱
  2. 标准化
  3. 隔离

为什么要使用Docker

  1. 一致的运行环境,Docker镜像提供了除内核外完整的运行环境,确保了应用运行环境的一致性
  2. 快速的启动时间
  3. 隔离性
  4. 弹性伸缩、快速扩展,善于处理集中爆发的服务器使用压力
  5. 迁移方便,可以轻易的将在一个平台上运行的应用,迁移到另一个平台
  6. 持续交付和部署

Docker用途

Docker主要用于三大类。

  1. 提供一次性的环境:例如,本地测试他人的软件、持续集成时候提供单元测试和构建的环境
  2. 提供弹性的云服务:因为Docker容器可以随开随关,很适合动态扩容和缩容
  3. 组建微服务架构:通过多个容器,一台机器可以跑多个服务,在本机就可以模拟出微服务架构

Docker基本概念

Docker中有三个重要的基本概念。

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

镜像(Image)

操作系统分为内核和用户空间。对于Linux而言,内核启动后,会挂载root文件系统,Docker镜像就相当于一个root文件系统。

Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件,还包含了一些为运行时准备的配置参数。

容器(Container)

镜像和容器的关系,就像是面向对象程序设计中的 类 和 实例的关系,即 ClassInstance。镜像是静态的定义,容器时镜像运行时的实体,容器可以被创建、启动、暂停、停止、删除等。

容器本身也是一个文件,称为容器文件。一旦容器生成,就会存在image文件和容器文件。并且关闭容器并不会删除容器文件,只是容器停止运行。需要使用docker container rm命令进行删除

一个镜像可以创建多个容器。

仓库(Repository)

镜像构建完成后,可以在当前宿主机上运行,但是如果需要在其他服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样一种服务。

一个Docker Registry可以包含多个仓库,每个仓库可以包含多个标签(Tag),每个标签对应一个镜像。所以:仓库是Docker用来集中存放镜像文件的地方。

通常,一个仓库会包含同一个软件不同的镜像,而标签就用于对应软件的各个版本,可以使用<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像,如果没给出标签,使用latest作为默认标签。

其中,Docker Registry又分为公开服务和私有服务。

  • 公开服务是开发给用户使用,允许用户管理镜像的Registry服务。允许用户上传、下载公开的镜像。最常使用的Registry公开服务时Docker Hub,也是默认的Registry。
  • 用户也可在本地搭建私有Docker Registry。

最常用的Registry公开服务时官方的Docker Hub,拥有大量的高质量镜像。

Docker属于Client-Server架构,使用Docker时,需要先在本机上开启Docker服务,即Docker的守护进程Daemon,然后使用终端作为Docker的客户端进行操作Docker。


1-Docker概述
https://zhaoquaner.github.io/2022/08/15/Docker/1-Docker概述/
更新于
2022年8月15日
许可协议