卧槽!我写的 Docker 镜像下载量居然突破了一百万...

2024-05-15 12:18

本文主要是介绍卧槽!我写的 Docker 镜像下载量居然突破了一百万...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是「进击的Coder」的第 365 篇技术分享

作者:崔庆才

来源:崔庆才丨静觅

阅读本文大概需要 6 分钟。

今天还是照常逛 GitHub,看到了之前写的一个代理池(https://github.com/Python3WebSpider/ProxyPool)项目的一条 Issue,他问我有没有构建好的代理池 Docker 镜像。

这个自然是有的,我之前构建好了放在 Docker Hub 了,准备顺手找找发一下给他。

然后我就打开了 Docker Hub 搜了一下,proxypool,结果你猜怎么着。

第一条结果就是我写的那个镜像,如图所示:

排名居然是第一位。

然后我又看了下下载量,这个数让我震惊了。。。

1M+

一百万?我写的这个镜像在全球已经有一百万次使用了...

这着实让我震惊了一把,我没看错吧,当时瞬间懵了,迟疑了一下,问我自己:M 是百万的意思吧?

我还确认了下第二名是 10K,是一万,我的排名比他高,那应该就是了。

有人可能好奇我是这么做到这么高的,这个我真不知道,我本来以为几千次下载就差不多了,因为 GitHub 上这个项目是 2.2k,所以我觉得是不是有人误操作帮我刷量了?或许吧。

毕竟 Nginx 才 10M+:

不过据我观察,10M+ 应该是封顶,最多就显示这么多,没准可能它已经 10T+ 了呢?

算了不管了,心里就小欢喜一下吧哈哈。

另外有的朋友可能不太懂这个,想知道我写的究竟是个啥,这里就顺便再介绍下啦。

这就是个代理池,可以一键运行从网上抓取一些 HTTP 代理 IP,可以供爬虫伪装 IP 使用。

我写的这个代理池有这些功能:

  • 定时抓取免费代理网站,简易可扩展。

  • 使用 Redis 对代理进行存储并对代理可用性进行排序。

  • 定时测试和筛选,剔除不可用代理,留下可用代理。

  • 提供代理 API,随机取用测试通过的可用代理。

使用也非常简单,新建一个 docker-compose.yaml 文件,内容如下:

version: '3'
services:redis4proxypool:image: redis:alpinecontainer_name: redis4proxypoolcommand: redis-serverports:- "6379:6379"proxypool:image: 'germey/proxypool'container_name: proxypoolports:- "5555:5555"restart: alwaysenvironment:REDIS_HOST: redis4proxypool

然后使用 Docker-Compose 即可运行:

docker-compose up

运行结果类似如下:

redis        | 1:M 19 Feb 2020 17:09:43.940 * DB loaded from disk: 0.000 seconds
redis        | 1:M 19 Feb 2020 17:09:43.940 * Ready to accept connections
proxypool    | 2020-02-19 17:09:44,200 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to avoid this message.
proxypool    | 2020-02-19 17:09:44,203 INFO supervisord started with pid 1
proxypool    | 2020-02-19 17:09:45,209 INFO spawned: 'getter' with pid 10
proxypool    | 2020-02-19 17:09:45,212 INFO spawned: 'server' with pid 11
proxypool    | 2020-02-19 17:09:45,216 INFO spawned: 'tester' with pid 12
proxypool    | 2020-02-19 17:09:46,596 INFO success: getter entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
proxypool    | 2020-02-19 17:09:46,596 INFO success: server entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
proxypool    | 2020-02-19 17:09:46,596 INFO success: tester entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

可以看到 Redis、Getter、Server、Tester 都已经启动成功。

这时候访问 http://localhost:5555/random 即可获取一个随机可用代理。

在项目里面只需要请求这个 API,然后解析网页返回结果获取到代理就能直接用了。

关于详细的原理大家可以参考我的这篇文章:https://cuiqingcai.com/7048.html

详细的使用方法可以看项目的 README:https://github.com/Python3WebSpider/ProxyPool

欢迎大家试用提宝贵意见哈,感谢!

End

「进击的Coder」专属学习群已正式成立,搜索「CQCcqc4」添加崔庆才的个人微信或者扫描下方二维码拉您入群交流学习。

看完记得关注@进击的Coder

及时收看更多好文

↓↓↓

点个在看你最好看

这篇关于卧槽!我写的 Docker 镜像下载量居然突破了一百万...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991810

相关文章

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

docker 重命名镜像的实现方法

《docker重命名镜像的实现方法》在Docker中无法直接重命名镜像,但可通过添加新标签、删除旧镜像后重新拉取/构建,或在DockerCompose中修改配置文件实现名称变更,感兴趣的可以了解一下... 目录使用标签(Tagging)删除旧的php镜像并重新拉取或构建使用docker Compose在Do

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

linux配置podman阿里云容器镜像加速器详解

《linux配置podman阿里云容器镜像加速器详解》本文指导如何配置Podman使用阿里云容器镜像加速器:登录阿里云获取专属加速地址,修改Podman配置文件并移除https://前缀,最后拉取镜像... 目录1.下载podman2.获取阿里云个人容器镜像加速器地址3.更改podman配置文件4.使用po

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Conda国内镜像源及配置过程

《Conda国内镜像源及配置过程》文章介绍Conda镜像源使用方法,涵盖临时指定单个/多个源、永久配置及恢复默认设置,同时说明main(官方稳定)、free(逐渐弃用)、conda-forge(社区更... 目录一、Conda国内镜像源二、Conda临时使用镜像源指定单个源临时指定多个源创建环境时临时指定源

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do