Docker Engine(Docker引擎)是Docker的核心部分,使用的是客户端-服务器(C/S)架构模式,其主要组成部分如下图所示。

从上图中可以看出,Docker Engine中包含了三个核心组件(docker CLI、REST API和docker daemon),这三个组件的具体说明如下。

● docker CLI(command line interface):表示Docker命令行接口,开发者可以在命令行中使用Docker相关指令与Docker守护进程进行交互,从而管理诸如image(镜像)、container(容器)、network(网络)和data volumes(数据卷)等实体。

● REST API:表示应用程序API接口,开发者通过该API接口可以与Docker的守护进程进行交互,从而指示后台进行相关操作。

● docker daemon:表示Docker的服务端组件,他是Docker架构中运行在后台的一个守护进程,可以接收并处理来自命令行接口及API接口的指令,然后进行相应的后台操作。

对于开发者而言,既可以使用编写好的脚本文件通过REST API来实现与Docker进程交互,又可以直接使用Docker相关指令通过命令行接口来与Docker进程交互,而其他一些Docker应用则是通过底层的API和CLI进行交互的

Docker CLI常用命令说明

docker attach 将本地标准输入,输出和错误流附加到正在运行的容器docker build 从Dockerfile构建映像docker checkpoint 管理检查点docker commit 从容器的更改中创建新图像docker config 管理Docker配置docker container 管理容器docker cp 在容器和本地文件系统之间复制文件/文件夹docker create 创建一个新容器docker deploy 部署新堆栈或更新现有堆栈docker diff 检查容器文件系统上文件或目录的更改docker events 从服务器获取实时事件docker exec 在正在运行的容器中运行命令docker export 将容器的文件系统导出为tar存档docker history 显示图像的历史记录docker image 管理图像docker images列出图像docker import 从tarball导入内容以创建文件系统映像docker info 显示系统范围的信息docker inspect 返回有关Docker对象的低级信息docker kill 杀死一个或多个正在运行的容器docker load 从tar存档或STDIN加载图像docker login 登录Docker注册表docker logout 从Docker注册表注销docker logs 获取容器的日志docker manifest 管理Docker镜像清单和清单列表docker network 管理网络docker node 管理Swarm节点docker pause 暂停一个或多个容器中的所有进程docker plugin 管理插件docker port 列出端口映射或容器的特定映射docker ps 列出容器docker pull 从注册表中提取图像或存储库docker push 将映像或存储库推送到注册表docker rename 重命名容器docker restart 重新启动一个或多个容器docker rm 删除一个或多个容器docker rmi 删除一个或多个图像docker run 在新容器中运行命令docker save 将一个或多个图像保存到tar存档(默认情况下流式传输到STDOUT)docker search 在Docker Hub中搜索图像docker secret 管理Docker的秘密docker service 管理服务docker stack 管理Docker堆栈docker start 启动一个或多个已停止的容器docker stats 显示容器资源使用情况统计信息的实时流docker stop 停止一个或多个正在运行的容器docker swarm 管理Swarmdocker system 管理Dockerdocker tag 创建引用SOURCE_IMAGE的标记TARGET_IMAGEdocker top 显示容器的运行进程docker trust 管理Docker镜像上的信任docker unpause 取消暂停一个或多个容器中的所有进程docker update 更新一个或多个容器的配置docker version 显示Docker版本信息docker volume 管理卷docker wait 阻止直到一个或多个容器停止,然后打印退出代码
cli下执行linux命令,举例:[root@fpvm-DBServer61 storage]# docker info[root@fpvm-DBServer61 storage]# docker stats  ##实时看到docker容器的运行状态。 

docker rest api接口组件

docker软件自带docker rest api,不用安装
 默认情况下,docker只允许通过unix socket通信操作Docker daemon,但有时我们想通过HTTP或浏览器调用其Rest API,需单独配置启动参数

环境采样:
[root@fpvm-DBServer61 storage]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)
默认配置文件
[root@fpvm-DBServer61 storage]# cat /usr/lib/systemd/system/docker.service[Unit]Description=Docker Application Container EngineDocumentation=https://docs.docker.comAfter=network-online.target firewalld.serviceWants=network-online.target
[Service]Type=notify# the default is not to use systemd for cgroups because the delegate issues still# exists and systemd currently does not support the cgroup feature set required# for containers run by dockerExecStart=/usr/bin/dockerd --data-root /mnt/docker/storage ##这里是我修改过的ExecReload=/bin/kill -s HUP $MAINPID# Having non-zero Limit*s causes performance problems due to accounting overhead# in the kernel. We recommend using cgroups to do container-local accounting.LimitNOFILE=infinityLimitNPROC=infinityLimitCORE=infinity# Uncomment TasksMax if your systemd version supports it.# Only systemd 226 and above support this version.#TasksMax=infinityTimeoutStartSec=0# set delegate yes so that systemd does not reset the cgroups of docker containersDelegate=yes# kill only the docker process, not all processes in the cgroupKillMode=process# restart the docker process if it exits prematurelyRestart=on-failureStartLimitBurst=3StartLimitInterval=60s
[Install]WantedBy=multi-user.target
$vi /lib/systemd/system/docker.service
把ExecStart那行改成:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:888 -H unix:///var/run/docker.sock
888端口随便起的,保存,并重启服务(注意修改配置文件需要,重载下)
[root@fpvm-DBServer61 storage]# systemctl stop dockerWarning: docker.service changed on disk. Run 'systemctl daemon-reload' to reload units. ###提示重载
[root@fpvm-DBServer61 storage]# systemctl daemon-reload[root@fpvm-DBServer61 storage]# systemctl stop docker[root@fpvm-DBServer61 storage]# systemctl start docker

通过接口查看某个容器的具体信息

 $curl -XGET 'http://127.0.0.1:888/containers/df7b7568fa7a/json' | python -m json.tool

通过接口获取所有的镜像

 $curl 'http://127.0.0.1:888/images/json?all=0'| python -m json.tool

通过接口关闭某个容器,启动容器

$ curl -s -XPOST "http://127.0.0.1:888/containers/容器id/stop"
$ curl -s -XPOST "http://127.0.0.1:888/containers/容器id/start"容器id 通过docker ps 查看

Docker Daemon(docker server)是Docker的守护进程
大致可以分为Docker Server、Engine和Job三部分。Docker Daemon可以认为是通过Docker Server模块接受Docker Client的请求,并在Engine中处理请求,然后根据请求类型,创建出指定的Job并运行,运行过程的作用有以下几种可能:向Docker Registry获取镜像,通过graphdriver执行容器镜像的本地化操作,通过networkdriver执行容器网络环境的配置,通过execdriver执行容器内部运行的执行工作等,Docker Client通过命令行与Docker Damon通信,完成Docker相关操作
Docker Daemon配置文件即/lib/systemd/system/docker.service

[root@fpvm-DBServer61 storage]# ps -ef | grep dockerdroot 62818 1 0 13:27 ? 00:00:01 /usr/bin/dockerd --data-root /mnt/docker/storage -H tcp://0.0.0.0:888 -H unix:///var/run/docker.sock

Docker引擎核心组件的更多相关文章

  1. Windows10下的docker安装与入门 (二)使用docker引擎在容器中运行镜像

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  2. LCOW —— 单一Docker引擎下可同时运行Linux和Windows容器啦!

    https://blog.csdn.net/m2l0zgssvc7r69efdtj/article/details/79251059 就在上周,Docker官方的master分支上新增了LCOW(Li ...

  3. Docker 引擎(三)

    Docker 引擎是一个包含以下主要组件的客户端服务器应用程序. 一种服务器,它是一种称为守护进程并且长时间运行的程序. REST API用于指定程序可以用来与守护进程通信的接口,并指示它做什么. 一 ...

  4. docker swarm英文文档学习-5-在swarm模式中运行Docker引擎

    Run Docker Engine in swarm mode在swarm模式中运行Docker引擎 当你第一次安装并开始使用Docker引擎时,默认情况下禁用swarm模式.在启用集群模式时,需要处 ...

  5. 《Docker Deep Dive》Note - Docker 引擎

    <Docker Deep Dive>Note Docker 引擎 1. 概览 graph TB A(Docker client) --- B(daemon) subgraph Docker ...

  6. 深入剖析Windows专业版安装Docker引擎和Windows家庭版Docker引擎安装的区别

    原创声明:作者:Arnold.zhao  博客园地址:https://www.cnblogs.com/zh94 公司使用的电脑是Windows专业版,所以配置本机的Docker时会方便许多,后续由于需 ...

  7. 12.第十一篇 安装docker引擎

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483838&idx=1&sn=5a13aed5 ...

  8. Docker概念学习系列之详谈Docker 的核心组件与概念(5)

    不多说,直接上干货!   见[博主]撰写的https://mp.weixin.qq.com/s/0omuSAjF5afJBZBxhbKTqQ 想要了解Docker,就必须了解Docker的五大核心概念 ...

  9. 你不得不了解的应用容器引擎---Docker

    最近突然想搭一个redis集群玩玩,因为公司的电脑同时开2个虚拟机就卡的不行,所以我就想到用Docker开启多个redis-server来搭建.然后在网上找着找着发现,使用Docker,哪需要搭建啊, ...

随机推荐

  1. C++移动语义 详细讲解【Cherno C++教程】

    移动语义 本文是对<最好的C++教程>的整理,主要是移动语义部分,包含视频85p左值和右值.89p移动语义与90p stdmove和移动赋值操作符. 移动语义是C++11的新feature ...

  2. 拉普拉斯特征映射(Laplacian Eigenmaps)

    1 介绍 拉普拉斯特征映射(Laplacian Eigenmaps)是一种不太常见的降维算法,它看问题的角度和常见的降维算法不太相同,是从局部的角度去构建数据之间的关系.也许这样讲有些抽象,具体来讲, ...

  3. Mybatis传递参数的几种方式

    使用Map传递 优点:直接在sql中取出key即可 缺点:适用于小项目,不符合大公司规范 对象传递参数 优点:符合标准规范 缺点:麻烦 3.只有一个基本类型参数的情况下,直接在sql中取中 4.多个参 ...

  4. VS2022 安装.NET 3.5/.NET 4/.NET 4.5/.NET 4.5.1目标包的方法

    最近重装了系统,就装了一个Visual Studio 2022,发现之前的老项目打不开了,需要下载目标包,但是在Visual Studio Installer 里面无法安装 .NET 3.5/.NET ...

  5. 数据类型 Java day7

    数据类型 数据类型包含:引用数据类型和基本数据类型 引用数据类型:出去基本数据类型,其他的类型,如String 基本数据类型:总共分四大类有八种 四大类:整数,浮点数.字符.布尔 一.整数包含以下 数 ...

  6. Adobe AIR 应用程序图标详细描述

    官方PDF文档: http://help.adobe.com/zh_CN/air/build/WS901d38e593cd1bac1e63e3d129907d2886-8000.html#WS901d ...

  7. docker容器登录,退出等操作命令

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口 ...

  8. 面试问题之C++语言:mutable关键字

    转载于:https://www.cnblogs.com/xkfz007/articles/2419540.html mutable关键字 mutable的中文意思是"可变的,易变的" ...

  9. spring aware 的个人理解

    今天学习到了spring aware ,特地百度了下这方面的知识,现在谈下我的理解. Spring的依赖注入的最大亮点就是你所有的Bean对Spring容器的存在是没有意识的.即你可以将你的容器替换成 ...

  10. 学习Cobbler(一)

    一. http://cobbler.github.io/ Cobbler is a Linux installation server that allows for rapid setup of n ...