首页 > 其他分享 >理解Docker——深入引擎室

理解Docker——深入引擎室

时间:2022-10-07 10:03:14浏览次数:53  
标签:请求 宿主机 引擎 深入 进程 Docker 守护 客户端


本文主要内容



  • Docker的架构
  • 在用户的宿主机上追溯Docker的内部结构
  • 使用Docker Hub查找和下载镜像
  • 设置自己的Docker注册中心(registry)
  • 实现容器间的相互通信


掌握Docker的架构是更全面地理解Docker的关键。在本文中,读者将在自己的主机和网络上对Docker的主要组件进行大致了解,并学习一些有助于增进这种理解的技巧。

在这个过程中,将学习一些有助于更有效地使用Docker(及Linux)的小窍门。后续的更高级的很多技巧都是基于这里所见的部分,因此请特别留意以下内容。

1.1 Docker的架构

图1-1展示了Docker的架构,这将是本文的核心内容。我们将从高层次视角入手,然后聚焦到每个部分,使用设计好的技巧来巩固理解。


宿主机上的Docker(在编写本文时)分成两个部分:一个具有REST风格API的守护进程,以及一个与守护进程通信的客户端。图1-1展示的是运行着Docker客户端和守护进程的宿主机。


REST风格 一个REST风格API是指使用标准HTTP请求类型,如​​GET​​​、​​POST​​​、​​DELETE​​等,来执行通常符合HTTP设计者预想的功能的API。

调用Docker客户端可以从守护进程获取信息或给它发送指令。守护进程是一个服务器,它使用HTTP协议接收来自客户端的请求并返回响应。相应地,它会向其他服务发起请求来发送和接收镜像,使用的同样是HTTP协议。该服务器将接收来自命令行客户端或被授权连接的任何人的请求。守护进程还负责在幕后处理用户的镜像和容器,而客户端充当的是用户与REST风格API之间的媒介。

理解Docker——深入引擎室_al

图1-1 Docker架构概览

私有Docker注册中心是存储Docker镜像的一项服务,可以从任何有相应权限的Docker守护进程向其发送请求。这个注册中心处于内部网络中,不能公开访问,因此被视为是私有的。

宿主机一般坐落在一个私有网络上。在收到请求时,Docker守护进程将连接互联网来获取镜像。

Docker Hub是由Docker公司运营的一个公共的注册中心。互联网上也存在其他公共的注册中心,且Docker守护进程可与之进行交互。

在前文中我们说可以将Docker容器分发到任何能运行Docker的地方——这并不完全正确。实际上,只有当守护进程可以被安装到机器上时,容器才能在这台机器上运行。最明显的事实是,Docker客户端可以运行在Windows上,但守护进程(还)不行。

理解这张图的关键在于,当用户在自己的机器上运行Docker时,与其进行交互的可能是自己机器上的另一个进程,或者甚至是运行在内部网络或互联网上的服务。

现在,对Docker的结构有了大致的印象,我们来介绍几个与图中不同部分有关的技巧。

1.2 Docker守护进程

Docker守护进程(见图1-2)是用户与Docker交互的枢纽,因而它是理解所有相关部分的最佳切入点。它控制着用户机器上的Docker访问权限,管理着容器与镜像的状态,同时代理着与外界的交互。

理解Docker——深入引擎室_客户端_02


图1-2 Docker守护进程

守护进程与服务器 守护进程是运行在后台的一个进程,不在用户的直接控制之下。服务器是负责接受客户端请求,并执行用于满足该请求所需的操作的一个进程。守护进程通常也是服务器,接收来自客户端的请求,为其执行操作。​​docker​​命令是一个客户端,而Docker守护进程则作为服务器对Docker容器和镜像进行操作。

我们来看几个技巧,这些技巧用于展示Docker作为守护进程高效运行,同时使用​​docker​​命令与其进行的交互被限制为执行操作的简单请求,就像与Web服务器进行交互一样。第一个技巧允许其他人连接你的Docker守护进程,并执行与你在宿主机上所能执行的相同操作,第二个技巧说明的是Docker容器是由守护进程管理的,而不是你的shell会话。

1.3 Docker客户端


Docker客户端(见图1-3)是Docker架构中最简单的部件。在主机上输入​​docker run​​​或​​docker pull​​这类命令时运行的便是它。它的任务是通过HTTP请求与Docker守护进程进行通信。


理解Docker——深入引擎室_客户端_03

图1-3 Docker客户端

在本节中,读者将看到如何监听Docker客户端与服务器之间的信息,还将看到一些与端口映射有关的基本技巧,这是向本文后续的编排章节迈进的一小步,也是使用浏览器作为Docker客户端的一种方式。


标签:请求,宿主机,引擎,深入,进程,Docker,守护,客户端
From: https://blog.51cto.com/u_13127751/5734221

相关文章

  • Docker使用docker compose部署zfile 实现在线浏览下载
    需要先安装docker-composecurl-Lhttps://get.daocloud.io/docker/compose/releases/download/v2.2.3/docker-compose-`uname-s`-`uname-m`>/usr/local/bin/docker-c......
  • docker搭建个人云盘可道云kodbox
    1、拉取kodbox镜像(文章最后有自己编写yml文件可直接搭建)dockerpulltznb/kodbox:1.152、创建并启动kodboxdockerrun-d-it--namekodbox-p1111:80-v/data/do......
  • docker搭建扫雷小游戏
    下载HTML文件包链接:https://pan.baidu.com/s/1AFfkQMKBjAspgGNldRmHXQ提取码:9adg复制这段内容后打开百度网盘手机App,操作更方便哦下载httpd镜像[root@docker~]#......
  • docker搭建RPG小游戏
    编写Dockerfile[root@docker~]#vimDockerfileFROMcentos:7ADDhttp://23126342.s21d-23.faiusrd.com/0/ABUIABAAGAAg1M3F9wUoxOzFiwY?f=BrowserQuest.tar.gz&v=1592......
  • docker搭建2048小游戏
    下载2048游戏包链接:https://pan.baidu.com/s/1E5RkGgfLSo3XYmvJ7RId_Q提取码:1gc5复制这段内容后打开百度网盘手机App,操作更方便哦打包成镜像[root@docker~]#ls......
  • Docker
    什么是Docker官网的介绍是“Dockeristheworld’sleadingsoftwarecontainerplatform.”官方给Docker的定位是一个应用容器平台。Docker是一个容器平台的领导者......
  • Docker 上跑 Jupyter 还带GPU
    首先安好 nvidia-docker 才能看到GPU #root用户才可以分配GPUsudodockerrun-it--rm--namejupyter-p0.0.0.0:8888:8888--gpusall-v/home/ubuntu/jupyte......
  • Docker 上跑 Clickhouse
    dockerrun--rm--nameclickhouse-p8123:8123--ulimitnofile=262144:262144yandex/clickhouse-server 下面是从MYSQL导入表createtable<table_name>engine=......
  • Docker
    Dockerfile的使用Dockerfile是一个文件通过使用一些语法规则,它可以用来根据一个基础镜像,再加上自定义配置,来构建一个自定义镜像,比如说构建一个java后端应用。下面是一......
  • docker管理工具——portainer
    docker管理工具——portainerPortainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、......