首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法加速docker exec?

有没有办法加速docker exec?
EN

Stack Overflow用户
提问于 2020-11-18 22:05:02
回答 1查看 433关注 0票数 0

有没有办法消除docker exec的开销?例如,当我在一个已经运行的容器上调用docker exec ls时,返回结果需要0.15秒。

代码语言:javascript
复制
root@min:/# time docker exec 6f ls
bin
boot
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

real    0m0.159s
user    0m0.028s
sys 0m0.028s

但是,如果我启动附加的容器,并从容器的命令行执行ls,它只需要几毫秒。

代码语言:javascript
复制
root@min:/# docker start -ai 6f
[root@6f384443d3a6 /]# time ls
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

real    0m0.004s
user    0m0.003s
sys 0m0.000s

容器的创建方式如下:

代码语言:javascript
复制
$ docker create -t -i fedora bash
6f8af538ec541dd581ebc2a24153a28329acb5268abe5ef868c1f1a261221752
$ docker start 6f

docker exec的开销是多少?有没有办法减少它?(我正在尝试创建一个服务,该服务托管正在运行的容器,并在其中调用可执行文件并返回结果。但如果每次调用需要150毫秒,那就不好了)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-18 22:55:49

Docker被实现为基于HTTP的服务,通常通过Unix套接字调用。例如,您可以在Docker API文档中看到"create an exec instance"请求。运行一个docker exec命令至少需要两次往返,外加启动主机端docker进程的开销。在原生Linux上,HTTP调用将通过Unix套接字进行;在其他平台上,根据您的设置,它可能需要跨越VM边界,甚至需要通过TCP。

对我来说,一次docker exec调用150ms直观地感觉有点慢,但并没有超出合理的范围。由于所有这些机制都在docker客户端工具和服务器守护进程中,因此您不能做太多的事情来加快速度。

典型的Docker设置会有运行长时间运行的服务器进程的容器(不是一个空的fedora容器,也不是一个bash外壳作为主容器进程)。您应该能够向容器发出网络请求,这可能比docker exec更快(并且不需要管理员权限)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64894654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档