Docker介绍及架构(1)

1.什么是容器

  • 传统的虚拟化技术,比如VMWare、KVM、Xen,目标是创建完整的虚拟机。为了运行应用,除了部署应用本身及其依赖(通常几十MB),还得安装整个操作系统(几十GB)。

  • 由于所有的容器共享同一个Host OS,这使得容器在体积上要比虚拟机小很多。另外,启动容器不需要启动整个操作系统,所以容器部署和启动速度更快、开销更小,也更容易迁移。

虚拟机与容器的差异

2.Docker的特性

  • Docker可以将任何应用及其依赖打包成一个轻量级、可移植、自包含的容器。

  • 其实,“集装箱”和“容器”对应的英文单词都是“Container”。

集装箱与Docker对比

3.Docker架构

Docker的核心组件包括:

  1. Docker客户端:Client
  2. Docker服务器:Docker daemon
  3. Docker镜像:Image
  4. Registry
  5. Docker容器:Container
Docker架构
  • Docker采用的是Client/Server架构。
  • 客户端向服务器发送请求,服务器负责构建、运行和分发容器。
  • 客户端和服务器可以运行在同一个Host上,客户端也可以通过socket或REST API与远程的服务器通信。

3.1.Docker客户端

  • 最常用的Docker客户端是docker命令。

  • 通过docker我们可以方便地在Host上构建和运行容器。

docker命令
  • 除了docker命令行工具,用户也可以通过REST API与服务器通信。

3.2.Docker服务器

  • Docker daemon是服务器组件,以Linux后台服务的方式运行
root@Tod:~# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-08-07 12:56:01 CST; 10h ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 614 (dockerd)
  • Docker daemon运行在Docker host上,负责创建、运行、监控容器,构建、存储镜像。

  • 默认配置下,Docker daemon只能响应来自本地Host的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开TCP监听。

3.3.Docker镜像

  • 可将Docker镜像看成只读模板,通过它可以创建Docker容器。

  • 镜像有多种生成方法:

    • (1)从无到有开始创建镜像;
    • (2)下载并使用别人创建好的现成的镜像;
    • (3)在现有镜像上创建新的镜像。
  • 可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称作Dockerfile,通过执行docker build 命令可以构建出Docker镜像

3.4.Docker容器

  • Docker容器就是Docker镜像的运行实例。

  • 用户可以通过CLI(Docker)或是API启动、停止、移动或删除容器。

  • 可以这么认为,对于应用软件,镜像是软件生命周期的构建和打包阶段,而容器则是启动和运行阶段。

3.5.Registry

  • Registry是存放Docker镜像的仓库,Registry分私有和公有两种。

  • Docker Hub(https://hub.docker.com/)是默认的Registry,由Docker公司维护,上面有数以万计的镜像,用户可以自由下载和使用。

  • docker pull命令可以从Registry下载镜像。

  • docker run命令则是先下载镜像(如果本地没有),然后再启动容器。

  • docker images可以查看到httpd已经下载到本地

  • docker ps或者docker container ls显示容器正在运行

你可能感兴趣的:(Docker介绍及架构(1))