docker架构和运行原理

架构

  • Docker 主机(Host):笔记本、服务器、云服务器,用于执行 Docker 守护进程和容器。

  • Docker Machine:是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

Docker 客户端和服务器端

Docker 是客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

  • Docker Server:常驻后台的系统进程,称之为 docker daemon。所谓“运行 docker”,指的就是运行 Docker daemon,其作用主要有以下两点:

    • 接受并处理 Docker Client 发送的请求
    • 管理所有的 Docker containers 和 Docker images
  • Docker 客户端(Client):用户通过 client 操作 server(daemon),实现对 Docker image 和 container 的管理

Docker client 与 docker daemon 建立请求的方式

有三种,分别是:

  • tcp://host:port
  • unix://path/to/socket
  • fd://socketfd

执行下面命令:

ps -ef|grep docker


上图显示,通过fd://连接本地server

镜像(Images)、容器(Container)、仓库(Registry)的关系

  • Docker 镜像(Images):是用于创建 Docker 容器的模板。

  • Docker 容器(Container) :通过 Docker 镜像来创建,是独立运行的一个或一组应用。
    默认只访问本地docker server

  • Docker 仓库(Registry),保存镜像的仓库,相当于github

    Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

执行过程

docker run hello-world
  1. docker client向本地docker server发指令,
  2. docker server查找本地是否有该镜像:
    • 有就运行;
    • 如果没有,去docker hub下载镜像
    • docker hub有该镜像,下载到本地,docker server以该镜像为模板创建容器并运行
    • docker hub没有该镜像,返回错误信息

感谢:
https://www.jianshu.com/p/ee959322a8f6
https://segmentfault.com/a/1190000006448568


原文出处:/show_1EF5jk9PJ9bw.html