Docker(三)Docker是如何工作的

摘自

https://mp.weixin.qq.com/s/SsXIuDqeze_et8vWQ8fr3g

 

一、Docker Client

也称为Docker客户端。其实就是Docker提供命令行界面工具,是许多Docker用户与Docker进行交互的主要方式。客户端可以构建,运行和停止应用程序,还可以远程与Docker_Host进行交互。

 

二、Docker daemon

Docker daemon是服务器组建,以Linux后台服务的方式运行,是Docker最核心的后台进程,我们也把它称为守护进程。它负责响应来自Docker Client的请求,然后将这些请求翻译成系统调用完成容器管理操作。该进程会在后台启动一个API Server,负责接受由Docker Client发送的请求,接受到的请求通过Docker daemon内部的一个路由分发调用,由具体的函数来执行请求。

我们大致可以将其分为以下三部分:

  • Docker Server
  • Engine
  • Job

 

Docker Daemon的架构

 

Docker Daemon可以认为是通过Docker Server模块接受Docker Client的请求,并在Engine中处理请求,创建出置顶的Job并运行。Docker Daemon运行在Docker host上,负责创建、运行、监控容器,构建、存储镜像。

运行过程的作用有以下集中可能:

  • 向Docker Registry获取镜像
  • 通过graphdriver执行容器镜像的本地化操作
  • 通过networkdriver执行容器网络环境的配置
  • 通过execdriver执行容器内部运行的执行工作

 

由于Docker Daemon和Docker Client的启动都是通过可执行文件docker 来完成的,因此两者的启动流程非常相似。Docker可执行文件运行时,运行代码通过不同的命令行flag参数,区分两者,并最终运行两者各自相应的部分。

docker --daemon = true

docker –d

docker –d = true

 

再由docker的main()函数来解析以上命令的相应flag参数,并最终完成Docker Daemon的启动。下图可以很直观地看到Docker Daemon的启动流程:

默认配置下,Docker daemon只能响应来自本地Host的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开TCP监听。我们可以照着如下步骤进行配置。

  1. 编辑配置文件/etc/systemd/system/multi-user.target.wants/docker.service。在环境变量ExecStart后面添加 -H tcp://0.0.0.0,允许来自任意 IP 的客户端连接。
  2. 重启docker daemon
  3. 通过以下命令即可实现与远程服务器通信。
    docker -H 服务器IP地址 info

     

三、Docker Image

Docker image可以看作一个特殊的文件系统,除了提供运容器运行时所需要的程序、库、资源、配置等文件外,还包含了一些为运行时准备的参数(匿名卷,环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。我们可将Docker镜像看成只读模版,通过它可以创建Docker容器。我们可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被乘坐Dockerfile,通过执行docker build<docker-file>命令可以构建出Docker镜像

 

四、Docker Registry

Docker registry是存储docker image的仓库,它在docker生态环境中的位置如下图:

 

五、Docker Container

Docker 容器就是Docker镜像的运行实例,是真正运行项目程序、消耗系统资源、提供服务的地方。Docker Container提供了系统硬件环境,我们可以使用Docker Images这些制作好的系统盘,再加上我们所编写好的项目代码,run一下就可以提供服务了。

 

转载于:https://www.cnblogs.com/ylxn/p/10509623.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值