ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker引擎核心组件

2022-02-07 14:02:35  阅读:203  来源: 互联网

标签:容器 storage 引擎 组件 fpvm Docker root docker


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 管理Swarm
docker system 管理Docker
docker tag 创建引用SOURCE_IMAGE的标记TARGET_IMAGE
docker 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 Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=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 docker
ExecStart=/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=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=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 docker
Warning: 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 dockerd
root 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

 

标签:容器,storage,引擎,组件,fpvm,Docker,root,docker
来源: https://www.cnblogs.com/aozhejin/p/15867630.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有