找回密码
 立即注册
搜索
查看: 14535|回复: 58

[软件] docker各种问题贴

[复制链接]
     
发表于 2022-4-20 19:17 | 显示全部楼层 |阅读模式
本帖最后由 b0207191 于 2022-7-27 23:46 编辑

现在容器很时髦,但是不知道隔离导致性能影响多大,有没有这方面的介绍

参考链接
http压测nginx在Docker中的性能损失 - 灰信网(软件开发博客聚合) (freesion.com)

Docker部署服务,最大的性能损失在于网络,docker-proxy转发性能表现一般。但实际一般项目也不会达到这种水平的负载量,宿主机器测试时,本地网卡lo的流量已达11000Mbps,超过万兆网口的物理限制。其次性能损失在于文件系统IO

又比如,docker好像可以识别usb设备,那么usb访问速度影响多大呢
回复

使用道具 举报

发表于 2022-4-20 19:29 | 显示全部楼层
没啥影响,容器本质是内核分配的不同命名空间
回复

使用道具 举报

     
发表于 2022-4-20 21:33 来自手机 | 显示全部楼层
docker网络大概两种,一种是宿主机的IP+端口绑到容器里的一个端口,相当于NAT,就是文中那种情况,另一种是network namespace里的一对veth,那样网络性能等于linux下bridge(网桥/软交换)性能,瓶颈会小很多。
回复

使用道具 举报

     
发表于 2022-4-20 21:42 来自手机 | 显示全部楼层
我记得docker比v虚拟机性能好很多

—— 来自 Hisense HNR320T, Android 10上的 S1Next-鹅版 v2.5.3
回复

使用道具 举报

     
发表于 2022-4-20 21:54 | 显示全部楼层
docker真好用

我挂pt的话把transmission放里面用起来没问题吧

最近下载机打算把功能全放到docker里面



回复

使用道具 举报

     
发表于 2022-4-20 21:57 | 显示全部楼层
nextcloud这种感觉原生的比docker版本性能好店,不知道是我错觉还是程序设计原因,我这里普遍反应之前的docker版本的nextcloud卡顿
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-4-20 22:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2022-4-20 22:43 | 显示全部楼层
本帖最后由 samfs 于 2022-6-17 09:39 编辑


回复

使用道具 举报

     
发表于 2022-4-20 23:44 | 显示全部楼层
如楼上说所,docker用的是cgroup,systemd也用cgroup,不太会有太大的差异。更多影响还是来自于docker自己实现的组件
docker-proxy转发性能表现一般。-> 那就不要用默认网络模式, 用host mode就行。
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-4-21 06:40 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-4-21 07:50 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2022-4-21 07:57 来自手机 | 显示全部楼层
走的cgroups+命名空间隔离,影响很小很小
当然安全性也基本没有保证
回复

使用道具 举报

     
发表于 2022-4-21 11:33 | 显示全部楼层
host嘛  你真要的纠结网络性能的话   
回复

使用道具 举报

     
发表于 2022-4-21 11:58 | 显示全部楼层
docker快要过时了
回复

使用道具 举报

     
 楼主| 发表于 2022-4-21 21:57 | 显示全部楼层
Senni 发表于 2022-4-21 11:58
docker快要过时了

啥?  那取代它的是啥?   
回复

使用道具 举报

     
发表于 2022-4-21 23:29 来自手机 | 显示全部楼层
过时是说k8s往containerd上发展吧
自己本地起测试用docker compose还是挺方便的,生产还是k8s算球,当个yaml boy少操心就是最好的

—— 来自 OnePlus KB2005, Android 12上的 S1Next-鹅版 v2.5.3
回复

使用道具 举报

     
发表于 2022-4-22 00:13 来自手机 | 显示全部楼层
不谈工作,纯自用,Windows跑docker挺拉的,有没有别的替代
回复

使用道具 举报

发表于 2022-4-22 00:31 来自手机 | 显示全部楼层
win8 发表于 2022-4-22 00:13
不谈工作,纯自用,Windows跑docker挺拉的,有没有别的替代

用linux跑
回复

使用道具 举报

     
发表于 2022-4-22 00:46 来自手机 | 显示全部楼层
win8 发表于 2022-4-22 00:13
不谈工作,纯自用,Windows跑docker挺拉的,有没有别的替代

wsl试试呗,docker desktop支持wsl2挺久了,我自己用下来没啥问题, 在wsl里面开发和跑容器测试都挺方便

—— 来自 OnePlus KB2005, Android 12上的 S1Next-鹅版 v2.5.3
回复

使用道具 举报

     
发表于 2022-4-22 01:25 来自手机 | 显示全部楼层
gpu docker大概是host的92%——这个数据跟硬件配置和系统和驱动可能都有关系

网络的话,docker bridge就是烂啊没啥说的

—— 来自 samsung SM-N9860, Android 12上的 S1Next-鹅版 v2.5.2-play
回复

使用道具 举报

     
发表于 2022-4-22 09:55 来自手机 | 显示全部楼层
win8 发表于 2022-4-22 00:13
不谈工作,纯自用,Windows跑docker挺拉的,有没有别的替代

你是指跑Windows container还是Linux container?
默认情况下都是在hyper-v里面跑一个虚拟机

如果是Windows container可以试一下在Win server下面的Process isolate
回复

使用道具 举报

发表于 2022-4-22 10:04 | 显示全部楼层
win8 发表于 2022-4-22 00:13
不谈工作,纯自用,Windows跑docker挺拉的,有没有别的替代

直接用原生Linux
win的docker本质是跑在虚拟机里的Linux的docker
而且无论wsl1还是2,io性能都很拉
回复

使用道具 举报

头像被屏蔽
发表于 2022-4-22 22:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-4-22 22:52 | 显示全部楼层
macos 发表于 2022-4-22 22:40
windows的容器好像只有个人版才运行正常,而且俺看不出他能干啥

我能想到的就是在CI服务器里面有些用处吧,测试代码对不同MSVC版本的兼容性,比在同一台机器上装好几个环境好管理一些,同时又比虚拟机稍微方便一点。但是缺点也非常明显,image太大了,一个完整的编译环境十几G了。

听说携程那边曾经把Windows container用到过生产环境做服务,不知道现在他们还用不用
回复

使用道具 举报

     
发表于 2022-4-25 16:18 来自手机 | 显示全部楼层
docker的overhead非常低,工业界都普遍使用了,你就别操心性能问题了
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-4-25 19:26 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-4-25 19:30 | 显示全部楼层
Senni 发表于 2022-4-21 11:58
docker快要过时了

podman 或者 nerdctrl
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-4-25 21:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
 楼主| 发表于 2022-5-2 21:38 | 显示全部楼层
本帖最后由 b0207191 于 2022-5-2 22:28 编辑

感觉像java,类似点,  jar和os中间隔了一个java vm,这样jar在各种系统上可以不用重编译直接跑, docker app和os中间隔了一个docer,这样docker app不用重新编译可以直接跑



另外发现一个问题,docker pull busybox,  docker pull centos都是缩水版的,连gcc都没有。。。。
回复

使用道具 举报

     
发表于 2022-5-3 00:24 来自手机 | 显示全部楼层
b0207191 发表于 2022-5-2 21:38
感觉像java,类似点,  jar和os中间隔了一个java vm,这样jar在各种系统上可以不用重编译直接跑, docker a ...

在Linux上docker app和系统之间不需要用到虚拟化,但是MacOS版和Windows版docker需要启动一个Linux虚拟机来运行docker app。然后另一个docker在macos/Windows上性能不佳的原因(我感觉这个应该是docker在非Linux系统上慢的主要原因)是为了在macos和Windows上提供和Linux相似的体验,docker和操作系统之间做了一个文件系统的抽象层。然而这个抽象层性能说不上好,导致挂载到docker application上的文件io速度相当之慢。

对于你的第二个问题,docker有一个模块化的思路。你要什么应用就起一个新容器来跑这个应用。比方说如果你需要一个用来跑gcc的app和一个用来跑多媒体服务器的app,你不该把gcc和多媒体服务器塞到同一个容器里,而是应该分别起一个gcc的容器和一个多媒体服务器。
做法是你可以用官方提供centos(或者其他任何发行版)的镜像,在这个镜像的基础上分别制作一个带gcc的容器和一个带多媒体服务器的容器。

我是这么理解docker的,有错误的地方麻烦指出来

— from samsung SM-G9910, Android 12 of S1 Next Goose v2.5.2-play
回复

使用道具 举报

     
发表于 2022-5-3 01:24 | 显示全部楼层
除了网络部分基本没啥太大性能损失,网络也有各种损失低的轮子...

当然如果你的应用大量都是需要跑满千兆网万兆网的,那docker确实得不偿失
回复

使用道具 举报

     
发表于 2022-5-3 02:58 | 显示全部楼层
其实vm损失也不大 kvm大概20%左右 说实话
中间还有个micro kernel vm
类似kata contianer或者firecracker或者gvisor
我是愿意用损失来换简单部署的 毕竟机器可以加 全是硬件累死
回复

使用道具 举报

     
发表于 2022-5-3 14:16 | 显示全部楼层
b0207191 发表于 2022-5-2 21:38
感觉像java,类似点,  jar和os中间隔了一个java vm,这样jar在各种系统上可以不用重编译直接跑, docker a ...

要这些包你可以自己搞image啊,不要用官方做好的那些最基础【纯净】的image
这些image基本都是为了给你做base image用的

另外愿意用标准化换性能+1,公司生产环境用云原生pod+流水线,基本就是push完代码点一下部署就行了,不要太舒服
回复

使用道具 举报

发表于 2022-5-3 14:33 | 显示全部楼层
b0207191 发表于 2022-5-2 21:38
感觉像java,类似点,  jar和os中间隔了一个java vm,这样jar在各种系统上可以不用重编译直接跑, docker a ...

差远了,jvm是应用层虚拟机,把bytecode解释运行成本机native code,当然现在有jit了性能并不会损失太多
docker不存在任何转译,就是原始native code
实际上docker更像appimage,flatpak,snap这种程序和库的隔离手段(docker还多了资源隔离),而不是虚拟机或模拟器
回复

使用道具 举报

     
 楼主| 发表于 2022-5-3 21:06 | 显示全部楼层
tsubasa9 发表于 2022-5-3 14:33
差远了,jvm是应用层虚拟机,把bytecode解释运行成本机native code,当然现在有jit了性能并不会损失太多
...

有种说法,docker就是app,而且还号称跨平台,那么为什么没有一统天下,代替windows上的exe,Android上的apk,linux上的elf,so,
回复

使用道具 举报

发表于 2022-5-3 21:10 | 显示全部楼层
谁告诉你跨平台的?
docker只是Linux容器技术的一种,还是快入土的那个
回复

使用道具 举报

     
发表于 2022-5-3 22:20 | 显示全部楼层
b0207191 发表于 2022-5-3 21:06
有种说法,docker就是app,而且还号称跨平台,那么为什么没有一统天下,代替windows上的exe,Android上的 ...

docker没有跨平台吧,我记得docker是基于namespace的,是个linux内核的功能。mac行不行不知道,win是肯定不行的,之前win上的docker实际上还是跑在hyper-v里面的。
回复

使用道具 举报

     
 楼主| 发表于 2022-5-3 22:24 | 显示全部楼层
weakiwi 发表于 2022-5-3 22:20
docker没有跨平台吧,我记得docker是基于namespace的,是个linux内核的功能。mac行不行不知道,win是肯定 ...

嗯,说错了,应该是跨不同linux的发行版,
回复

使用道具 举报

发表于 2022-5-5 09:46 来自手机 | 显示全部楼层
tsubasa9 发表于 2022-5-3 21:10
谁告诉你跨平台的?
docker只是Linux容器技术的一种,还是快入土的那个

现在最流行的是啥。k8s吗?
回复

使用道具 举报

发表于 2022-5-5 09:58 | 显示全部楼层
weakiwi 发表于 2022-5-3 22:20
docker没有跨平台吧,我记得docker是基于namespace的,是个linux内核的功能。mac行不行不知道,win是肯定 ...

bsd有自己的一套类似的玩意儿,叫做jail
ios的jailbreak也是出自这个概念
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-11-14 18:24 , Processed in 0.159565 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表