Docker运行时间统计(基准)
我知道周围有很多docker专家,但是我花了相当多的时间来找出一些事实,并且了解了Docker的运行时间性能,但不幸的是我没有得到任何具体的答案。 让我开始告诉你我的系统的configuration:
(a)在具有48GB内存,1TB光盘和12核心CPU的机器上运行CentOS 6.5。 (b)我build立了一个大小差不多6.5GB的Docker镜像
下面是一些问题,如果有人可以为读者的利益回答:
(a)现在使用给定的configuration,问题是我可以并行运行多less个容器而不中断任何function?
(b)假设我有两张3.5GB大小的图像,那么是否build议运行多张小图像,或者大图像性能好?
(c)什么是与Docker一起使用的最佳文件系统选项?
编辑:更多信息
(d)其实我试图把许多编译器放在一个容器中,并试图让用户在线编译他们的语言。 这个工具正在开发中,将取代我现有的网站compileonlone.com。 事情进展良好,我build立了两个图像,每个编译器都很less。 我能够成功运行250个容器,之后我开始打开太多的文件。 在250个容器之后,我的RAM达到了40GB,CPU利用率约为50%。
我面临的主要问题是拆除旧的容器。 因为用户会来编译他的代码,然后会消失,所以我需要在一段时间后删除那些容器,但是当我试图通过使用docker rm -v来移除这些停止的容器时,它会减慢主docker进程,它几乎挂着。 我的意思是在/var/run/docker.sock中监听的docker -d守护进程。 不知道是否有任何其他的方式来清理这些容器或我有一个错误。 这里是Docker的细节:
# docker info Containers: 1016 Images: 41 Storage Driver: devicemapper Pool Name: docker-0:20-258-pool Pool Blocksize: 64 Kb Data file: /var/lib/docker/devicemapper/devicemapper/data Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata Data Space Used: 17820.7 Mb Data Space Total: 102400.0 Mb Metadata Space Used: 102.4 Mb Metadata Space Total: 2048.0 Mb Execution Driver: native-0.2 Kernel Version: 3.17.2-1.el6.elrepo.x86_64 Operating System: <unknown> WARNING: No swap limit support
如果有人可以帮助我如何以最快的方式删除旧的容器,那么它会很好。 简单的shell脚本和所有不工作。 我已经尝试过了
#docker rm -v $(docker ps -a |grep Exited | awk '{print $1}')
但是它完全放慢了主docker进程,并且在移除进程运行的时候无法创build新的容器。
感谢您花时间回答这些问题,这将帮助我以及其他许多人继续与Docker进行交stream。
a):容器就像一个过程。 这个问题就像问“我可以并行运行多less个进程”。 如果不知道进程在做什么,它是不能回答的。 请将这些信息添加到您的问题。
b)3.5GB和6.5GB对于Docker镜像都非常大。 最好的做法是把一个应用程序放在一个容器中:如果你有一个大小适中的应用程序,那么很好。 如果没有,也许你已经把你的应用程序的数据放入图像中。 这不是一个好主意,因为分层文件系统比普通的文件系统慢,而且你也不需要在事务数据上使用分层或快照的function。
有关pipe理数据的文档说明如何挂载常规磁盘,以便从容器中访问它。
编辑后,提供更多的信息
d)使用RAM意味着容器仍在运行。 如果你的站点逻辑中有某种方式来知道什么时候不再需要容器,你可以通过docker kill
它,然后docker rm
移除磁盘存储。 或者docker rm -f
将这两个操作合为一体。
经过大量的研发和与众多专家的讨论,我find了一个解决scheme,以减轻速度删除容器。 它很简单,你已经运行你的docker守护进程dm.blkdiscard = false选项如下。
docker -d –storage-opt dm.blkdiscard = false
顺便说一下,这是我所开发的。 在这里,我需要高速创build和删除容器
http://codingground.tutorialspoint.com
希望这会帮助许多人。
- Kubernetes和ERR_CONNECTION_RESET
- 如何更改已经分配给运行容器的docker用户设置和入口点
- 在一个Single Pod Kubernetes中运行多个容器
- Spark应用程序无法写入docker中运行的elasticsearch集群
- fio:数据集的块大小太大
- 在redhat linux上安装docker – 用'container-selinux'和'selinux-policy'
- 为什么docker集装箱可以看到主机上的所有GPU设备?
- 在Docker容器中运行脚本时使用的内存
- 当network_mode:“bridge”(docker-compose)时,无法从本地主机连接容器端口