Docker命令行与守护进程如何交互?

简介: 译者按 Docker是典型的C/S架构,其守护进程(daemon)与命令行(CLI)是通过REST API进行交互的。原文: Understanding how the Docker Daemon and Docker CLI Work Together译者: Fundebug为了保证可读性,本文采用意译而非直译。

译者按 Docker是典型的C/S架构,其守护进程(daemon)命令行(CLI)是通过REST API进行交互的。

原文: Understanding how the Docker Daemon and Docker CLI Work Together

译者: Fundebug

为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习

Docker并非单体应用,它由多个组件构成。这篇博客将介绍****Docker****守护进程****(daemon)****与****Docker****命令行****(CLI)****。事实上,当我们在谈论安装或使用Docker时,所指的其实就是Docker守护进程命令行

Docker架构图

img_e068035e830f46bd07623f84458b1661.jpe
docker-architecture.jpg

解释一下上图中的元素:

  • ****Docker****守护进程****(docker daemon)****是运行在你的操作系统上的一个服务。目前,它只能运行在Linux上,因为它依赖于一些Linux内核特性(比如Cgroup与Namespace)。 但是,也有一些特殊的办法让Docker运行在MacOS与Windows上(运行在Linux虚拟机中)。
  • ****Docker****守护进程********提供了****REST API****。许多工具(Docker命令行,Docker Compose等)都可以通过****REST API****与****Docker****守护进程********进行交互,例如创建容器,构建镜像等。
  • ****Docker****命令行****(docker CLI)****是与****Docker****守护进程********进行交互的主要工具。

Docker是C/S架构

Docker是Client/Server架构。其中Docker守护进程是服务端,Docker命令行是众多客户端之一。事实上,还有很多第三方的Docker客户端。

对于各种流行的编程语言,它们都有对应的Docker客户端。感兴趣的话,你也可以开发一个,使用REST API与Docker守护进程进行交互就好了。

通过客户端,你可以管理Docker的各种元素,包括镜像、容器、网络以及数据卷。对于Docker感兴趣的话,你不妨看看 Dive Into Docker course

Docker命令行与守护进程如何交互?

img_5b70f0aacefc0be8da3bd23505f70d67.jpe
docker-interaction.jpg

从左至右理解上图:

  • 最左侧是Docker客户端,即Docker命令行。我们可以运行各种Docker命令,比如构建镜像(docker build),下载镜像(docker pull),运行容器(docker run)。Docker命令行可以安装在各种操作系统上,例如Windows,MacOS或者Linux服务器。
  • 中间是Docker主机,Docker守护进程运行在上面。Docker命令行可以轻松地连接远程的Docker主机(给定IP和端口即可)。而在MacOS与Windows上"运行"Docker时,Docker守护进程事实上运行在Linux虚拟机中。这里关键点在于,Docker守护进程和命令行可以运行在不同的主机上。
  • 最右侧是Docker仓库,它也是Docker生态系统中的一份子。它是我们下载、上传、存储以及分享Docker镜像的地方。Docker仓库的细节与本文无关,因此不再赘述。

版权声明:
转载时请注明作者Fundebug以及本文地址:**
https://blog.fundebug.com/2017/05/22/docker-cli-daemon/**

目录
相关文章
|
数据可视化 Linux Go
Docker容器命令行可视化工具-Lazydocker
Lazydocker-专为懒人设计的容器命令行可视化交互式工具
1722 0
Docker容器命令行可视化工具-Lazydocker
|
9月前
|
JavaScript Java Docker
干货含源码!如何用Java后端操作Docker(命令行篇)
只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
存储 Linux Docker
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
关于如何在CentOS 7.6上安装Docker、介绍Docker存储引擎以及服务进程关系的实战案例。
753 3
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
|
缓存 Serverless Docker
函数计算产品使用问题之怎么修改Docker守护进程配置
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
监控 Linux API
在Docker中,docker run指令执行后,生成了哪些进程?
在Docker中,docker run指令执行后,生成了哪些进程?
|
Kubernetes Shell 测试技术
在Docker中,可以在一个容器中同时运行多个应用进程吗?
在Docker中,可以在一个容器中同时运行多个应用进程吗?
|
Linux Docker 容器
在Docker守护进程停机期间保持容器运行(即重启Docker时,正在运行的容器不会停止)
在Docker守护进程停机期间保持容器运行(即重启Docker时,正在运行的容器不会停止)
968 0
|
存储 缓存 Linux
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
本文介绍了Xenomai中的XDDP(Xenomai Distributed Data Protocol)通信机制,XDDP用于实时和非实时进程之间的数据交换。XDDP在Xenomai内核中涉及的数据结构和管理方式,以及创建XDDP通道后的实时端和非实时端连接过程。
673 0
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
|
存储 Cloud Native 网络协议
【云原生 | 06】Docker作为守护进程高效运行技巧展示
Docker守护进程是用户与Docker交互的枢纽,因而它是理解所有相关部分的最佳切入点。它控制着用户机器上的Docker访问权限,管理着容器与镜像的状态,同时代理着与外界的交互。
1012 0
【云原生 | 06】Docker作为守护进程高效运行技巧展示
|
Linux Docker 容器
Docker入门命令行
Docker入门命令行
386 130