Docker命令行与守护进程如何交互?
来源:互联网 发布:叶陌折 知乎 编辑:程序博客网 时间:2024/05/17 13:13
译者按: 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架构图
解释一下上图中的元素:
- 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命令行与守护进程如何交互?
从左至右理解上图:
- 最左侧是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/
阅读全文
0 0
- Docker命令行与守护进程如何交互?
- Docker客户端与守护进程
- Docker守护进程
- Docker学习之守护进程
- 如何创建守护进程
- 如何创建守护进程
- 如何调试守护进程
- 如何创建守护进程
- 如何创建守护进程
- 如何创建守护进程
- 如何创建守护进程
- 如何实现守护进程?
- 守护进程与setsid
- 守护进程与setsid
- 守护进程与setsid
- 守护进程与setid()
- 守护进程与setsid
- 守护进程与僵尸进程
- 剑指offer——C++面试需要的基础知识
- ${pageContext.request.contextPath} :JSP取得绝对路径方法
- 123
- bootstrap table 简介01
- 图片切换(一)(div+css+js)
- Docker命令行与守护进程如何交互?
- 特征选择之遗传算法
- kotlin学习笔记(二)
- BZOJ4881: [Lydsy2017年5月月赛]线段游戏
- 《算法导论》第13章 红黑树 个人笔记
- DispatherServlet配置url-pattern中的一个小细节
- 电视机的历史:录像带机》黑白电视》彩色电视+光盘机》计算机||曲面显示器,还是3d操作系统好
- JavaScript原型和原型链
- LeetCode 7. Reverse Integer