docker:基本架构

2023-10-29

docker是典型的CS架构,包括客户端和服务端两大核心组件,同时通过镜像仓库来存储镜像。客户端和服务器既可以运行在同一个机器上,也可以通过socket或者RESTful API来进行通信

服务端

docker的服务端一般在宿主主机后台运行,dockerd作为服务端接收来自客户的请求,并通过container具体处理与容器相关的请求,包括创建、运行、删除容器等。

服务端主要包括四个组件:

  • dockerd:为客户端提供RESTful API,响应来自客户端的请求,采用模块化的架构,通过专门的engine模块来分发管理各个来自客户端的任务。
  • docker-proxy:是dockerd的子进程,当需要进行容器端口映射时,docker-proxy完成网络映射配置
  • containered:是dockerd的子进程,提供gRPC接口响应来自dockerd的请求,对下管理runC镜像和容器环境
  • containered-shim:是containerd的子进程,为runC容器提供支持,同时作为容器内进程的根进程

在这里插入图片描述
dockerd默认监听本地的unix:///var/run/docker.socker套接字,只允许本地的root用户或者docker用户组成员访问。可以通过-H选项来修改监听的方式。比如,让docker监听本地的TCP连接1234端口:

dockerd -H 127.0.0.1:1234

docker-proxy只有当启动容器并且使用端口映射时候才会执行,负责配置容器的端口映射规则

  • 可以通过如下进行端口映射
docker run -itd -p 80:80 ubuntu:latest /bin/sh
  • 可以通过如下查看端口映射到了哪里
ps -ef | grep docker

在这里插入图片描述

客户端

用户使用的docker可执行命令即为客户端程序。客户端发送命令后,需要等待服务端返回;一旦收到返回后,客户端立即执行结束并退出。

客户端默认通过本地的unix:///var/run/docker.socker与服务端通信,如果服务端没有监听在默认地址,客户端必须通过-H参数指定了正确的地址才能连接到服务端:

docker -H tcp://127.0.0.1:1234 info

镜像仓库

镜像是使用容器的基础,docker使用镜像仓库存储和分发docker镜像。

用户可以从镜像仓库拉取镜像、也可以上传镜像到仓库

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker:基本架构 的相关文章

随机推荐

  • 一种HBase的表region切分和rowkey设计方案

    一种HBase的表region切分和rowkey设计方案 2014 05 14 14 21 56 转载 分类 MYSQL ORACLE DB2 sybase info 一种HBase的表region切分和rowkey设计方案 场景 HBas
  • 如何往服务器拷贝文件,怎样往云服务器拷贝文件

    怎样往云服务器拷贝文件 内容精选 换一换 登录Windows操作系统的弹性云服务器时 需使用密码方式登录 因此 用户需先根据创建弹性云服务器时使用的密钥文件 获取该弹性云服务器初始安装时系统生成的管理员密码 Administrator帐户或
  • selenium 后台运行设置handless模式

    selenium 后台运行设置handless模式 测试脚本调试完毕之后 部署到服务器运行 此时 需要将selenium的执行方式 切换为后台运行 也就是无界面运行 chrome option webdriver ChromeOptions
  • iOS制作启动图LaunchScreen.storyboard

    先制作一张启动图 png格式 启动图制作脚本 https github com QiShare QiAppIconGenerator 注意一个坑点 注意一个坑点 注意一个坑点 如果是横屏的图 那么图片的像素严格按照 宽2208 高1242
  • SpingBoot加解密项目spring-boot-starter-encrypt操作

    Spring Boot封装了一个Starter 内置了AES加密算法 GitHub地址如下 spring boot starter encrypt 先来看看怎么使用 可以下载源码 然后引入即可 然后在启动类上增加 EnableEncrypt
  • 微服务整合knife4j springboot2.6.14

    业务层 springboot集成knife4j 引入jar包依赖
  • Qt.ui文件是怎么生成相应的.h文件

    ui文件在编译文件时通过uic o ui h ui 命令自动生成ui头文件
  • SIMetrix教程-001.SIMetrix软件简介与安装

    由于某些原因需要用到SIMetrix仿真软件 然而网上的资料并不是特别多 故在此记录一下这款仿真软件的学习过程 也给有需要的人提供一些参考 免走弯路 如果使用过Pspice或者LTspice软件 学习SIMetrix会很容易入门 仿真软件都
  • bpe分词算法的原理以及在机器翻译中的应用

    概述 bpe byte pair encoding 是一种根据字节对进行编码的算法 主要目的是为了数据压缩 算法描述为字符串里频率最常见的一对字符被一个没有在这个字符中出现的字符代替的层层迭代过程 该算法在论文 https arxiv or
  • 分布式系统failover测试之拔盘插盘操作

    分布式系统failover测试之拔盘插盘操作 拔盘 echo scsi remove single device 1 0 0 0 gt proc scsi scsi echo scsi remove single device 2 0 0
  • CVPR2023论文及代码合集来啦~

    以下内容由马拉AI整理汇总 下载 点我跳转 狂肝200小时的良心制作 529篇最新CVPR2023论文及其Code 汇总成册 制作成 CVPR 2023论文代码检索目录 包括以下方向 1 2D目标检测 2 视频目标检测 3 3D目标检测 4
  • 图形化OpenGL调试器 BuGLe

    图形化OpenGL调试器 BuGLe 转 BuGLe 结合图形化的OpenGL调试与选择的过滤器上的OpenGL命令流 调试器可以查看状态 纹理 framebuffers 着色器 而过滤器允许日志 错误检查 自由相机控制 视频捕捉等 主页
  • 数羊

    H题数羊 第八届 图灵杯 NEUQ ACM程序设计竞赛个人赛 题目描述 憨憨小杨晚上睡不着觉 就开始数羊 她觉得一只一只数太慢了 突发奇想出了一种新的数羊方式 羊羊数量A n m 由两个整形变量n和m决定 计算方式如下 现在给出n和m的值
  • c#学习笔记

    1 输入prop 再按两次TAB会自动添加一个属性 set get方法 2 统一命名空间内 类可以跨多个文件 需要用partial e g partial class XXXX 3 类型 ulong 64无符号整数 decimal 有效数字
  • 阿里云服务器安装WordPress网站教程基于CentOS系统

    阿里云百科分享使用阿里云服务器安装WordPress博客网站教程 WordPress是使用PHP语言开发的博客平台 在支持PHP和MySQL数据库的服务器上 您可以用WordPress架设自己的网站 也可以用作内容管理系统 CMS 本教程介
  • linux---我电脑把给ubuntu分区删了开机就是什么grub rescue怎么办

    装了ubuntu后 会默认从Ubuntu的Grub菜单引导系统 Win8的MBR被替换为Grub来引导 于是 你删除了Ubuntu 也就是删除了Grub的文件 但是 你的引导扇区的启动参数还是指向了Grub 于是就grun rescue了
  • QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。

    QT多线程5种用法 第一种 主线程 GUI 第二种 子线程1继承自QThread 头文件 movetothread4 h 源文件 movetothread4 cpp 子线程1对象的创建 第二种 子线程2继承自QThread 头文件 源文件
  • Cannot find QEMU binary /usr/bin/kvm: Permission denied

    kvm报错 信息如下 Cannot find QEMU binary usr bin kvm Permission denied 解决办法 find name qemu kvm 或者 find name qemu 然后加软连接 ln s u
  • emacs verilog-mode方式实现verilog实例化集成

    文章目录 背景介绍 AUTOINST和AUTOWIRE的应用 推荐使用方法 auto template命令总结 中括号 里面没内容 表示auto inst时 会显示 3 0 类似内容 常用于相同module 多次实例化情况 我不常用 这里仅
  • docker:基本架构

    docker是典型的CS架构 包括客户端和服务端两大核心组件 同时通过镜像仓库来存储镜像 客户端和服务器既可以运行在同一个机器上 也可以通过socket或者RESTful API来进行通信 服务端 docker的服务端一般在宿主主机后台运行