我需要实现一个功能:同时创建多个docker容器,并且在这些容器内同时执行一条命令。

我的方法是使用pssh(一个python编写可以在多台服务器上并行执行命令的工具)来连接多个容器,实现同时执行。像这样:

pssh -h ip.txt -P uptime

ip.txt包含了服务器的ip列表,也就是容器的ip列表。uptime是需要在容器内同时执行的命令。

为了验证是否是同时执行,在执行具体命令(如uptime)之前我使用date命令打印当前系统时间(毫秒),我发现第1个容器和第10个容器相差了50ms左右:

这意味着,如果我需要在命令执行前后分别执行一次date命令来计算命令执行时间,那么在具体命令执行时,第1个容器和第10个容器就差了50ms,如果具体命令执行时间只有几ms,那就无法实现同时执行。

而当我清理缓存后,再执行,只差了3mm:

cache_clear的内容如下:

sudo sync

sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"

看上去date命令似乎会受缓存的影响?

将磁盘换成ssd(cpu,内存,系统,内核都一样),做了相同的测试,发现,在清不清缓存时,第1个容器和最后一个容器都差了40+ms:

总结起来就是,只有在case2时,能够满足我的需求:

如果pssh本身无法实现几ms以内的同时执行(也就是说,第1个容器的date命令本身就比第10个容器的命令先50ms执行),那么在case2时,即使清了缓存,也不应该只差3ms。所以我猜测pssh本身是能实现几ms内的并行的(也就是说,date开始执行的时间最多只差了几ms)。但是在date执行过程中完成时间不同,因此得到的系统时间就相差了几十ms。

由于我需要测命令执行的时间,因此不得不在命令执行前后执行date,这就导致除了case2以外,其它3中情况下测出的时间并不是所有容器真正并行执行命令的时间。

当然,我还试过使用time直接计算命令执行时间,但是结果和date计算出的时间没有本质区别。而且使用time也无法验证是否所有容器都是同时(只差几ms)执行命令(如uptime)的。虽然不使用date或者time,具体命令(如uptime),应该是同时执行的,但是现在我需要测试命令执行的时间,所以无法避开这两个命令。

现在我希望能在SSD下能够排除这种影响,但是又不知道date或time在实现过程中为什么会产生这种影响,是否存在其它计时的命令?或者其它实现docker多容器命令并发执行的方法?如果我的猜想是错的,也就是说,pssh并不能保证几ms内的同时执行,那么case2为什么又只差了3ms?希望前辈们给一些指导或者建议。

docker多个容器一起打包_如何实现多个docker容器同时执行一条命令?相关推荐

  1. docker多个容器一起打包_如何链接多个Docker容器并封装结果?

    在另一个容器中运行容器意味着在Docker容器中运行Docker引擎.这被称为Docker-in-Docker的dind,我强烈反对它.你可以在线搜索'dind'并发现为什么在大多数情况下这是一个坏主 ...

  2. docker多个容器一起打包_详解Docker 容器基础系统镜像打包

    因为容器本身是共享宿主操作系统内核,所以容器基础系统镜像包本身就是一个标准的 Linux rootfs + 用户自定义的工具.根据这个思路,我们就可以构建一个自己的容器基础系统镜像. 构建标准的 Li ...

  3. docker 不包含依赖 打包_从零开始学K8s: 4.Docker是什么

    "Docker"可以指代的对象可以有如下几个: Docker 容器技术:可以创建和使用Linux容器 Docker 社区:开源Docker社区致力于改进这些技术,使所有用户受益(h ...

  4. docker容器 eureka 集成_微服务:基于 Docker 的微服务架构之分布式企业级实践参考...

    编者按:本文分享自CSDN技术博客,作者为 FlyWine,所有权归原著者.若有不妥,联系本头条号以做必要处理. 目录 Microservice 和 Docker 服务发现模式 客户端发现模式 Net ...

  5. 多个容器一起打包_程序员修神之路容器技术为什么会这么流行(记得去抽奖)

    菜菜哥,你上次讲的kubernetes我研究了一下,你再给我讲讲docker呗 docker可很流行呀 kubernetes是容器编排技术,容器不就是指的docker吗? docker可不等于容器哦, ...

  6. docker停止容器后配置_整理了一份 Docker系统知识,从安装到熟练操作看这篇就够了 | 原力计划...

    作者 | IronmanJay 责编 | 王晓曼 出品 | CSDN博客 Docker 基础介绍 下图为 Docker 图标(是一个鲸鱼上面是集装箱). 1.我们为什么要使用Docker 当我们在工作 ...

  7. 多个容器一起打包_容器快速入门完全指南

    介 绍 容器,以及Docker和Kubernetes之类的容器技术已经日益成为许多开发人员工具包中常见的工具.容器化的核心目标是提供一种更好的方式,以可预测和便于管理的方式在不同的环境中创建.打包以及 ...

  8. docker启动容器执行多条命令

    打好了一个nginx镜像front 此时想在docker 容器启动的时候同时运行docker 里面的某一个脚本 docker run -id --name front -p 80:80 -e targ ...

  9. docker里面什么emule比较好_求万由系统DOCKER电驴的设置方式

    默认容器设置 网络                    类型        MLDonkey默认端口        默认容器端口        配置文件 http_port            T ...

最新文章

  1. 转学美本半年,我眼里的中美高等教育
  2. 02.Apollo配置中心整合spring cloud zuul
  3. 浅析Linux线程调度
  4. Python常用模块之re模块
  5. 小学计算机学情分析报告,小学信息技术_重点文字图说话教学设计学情分析教材分析课后反思...
  6. 关于NOR FLASH地址左右移的问题
  7. 太赞了!性能超越谷歌MobileNet!ECCV2020重磅推出MobileNeXt !
  8. 微信小程序开发:禁止输入表情的控制,验证方法,光标控制
  9. golang interface 类型转换_Golang面试题41道
  10. 94. autoload(2)
  11. python 获取文件大小_Python解决女朋友看电影没字幕的需求
  12. java中a 和 a_Java中的a++和++a的区别 | 学步园
  13. java接口 数据_一步步学习java后台(三)(接口返回数据处理)
  14. pb 数据窗口设置操作
  15. 2014清华计算机系直博名单,2014年清华大学博士研究生拟录取名单公示
  16. 04_python爬虫爬取超星回放
  17. 读书报告1500字计算机大学篇,大学生读书报告1500.doc
  18. 伺服电机脉冲控制的多种方式(AB相脉冲,方向脉冲,CW/CCW脉冲)
  19. ContextCapture User Guide V4.4.11 Welcome(Smart3D 帮助文档 第一章 欢迎)
  20. 用Windows自带的工具写一个一键关机小程序

热门文章

  1. C++设计模式详解之工厂模式解析
  2. win10获取管理员权限方法
  3. (一)云计算OpenStack介绍
  4. HTTPS原理与流程
  5. GTK显示GIF、GTK动画(图片连续播放)
  6. java线程池读文件_多线程读取Java文件
  7. idea 改变输出语句的颜色 工具类
  8. mysql前两个月_MySQL数据库表始终保持最近两个月的记录
  9. 计算机课组会议讲话,备课组长会议讲话稿
  10. php怎么给页面链接,怎么给一个PHP密码访问页面加超链接