现在需要挂梯子下载一批资源,然而我的梯子装在路由器中,openclash只能配置指定的某个设备不走梯子。所以索性就装个虚拟机专门用来下载东西,挂bt。如果需要走梯子,就单独在这个下载机中配置一个廉价梯子即可。

基本思路是虚拟机中跑docker应用,宿主机是RockyLinux9,虚拟机是ubuntu24.04.2

配置虚拟机

下载链接:Ubuntu 24.04.2 (Noble Numbat)

因为用不到桌面,所以使用server版本,安装过程参考:Ubuntu24.04-server的安装与初始化_ubuntu server-CSDN博客

跟着上面的博客安装,过程中最好换一个国内的源

虚拟机硬盘只要20g就够了,cpu我分配了4核,内存4g

非常需要注意的一点是:它预装的那些软件一个不要,docker也是。因为是通过snap装的,使用可能会有问题,我要用最脏的话骂snap

虚拟机挂载共享目录

我是通过cockpit事先准备好共享目录export,然后虚拟机中创建目录,按照下面的命令挂载即可

mount -t virtiofs export /export

如果要自动挂载,需要修改/etc/fstab文件

追加内容:

export  /export virtiofs   defaults  0   0

之后执行命令mount -a,验证fstab文件是否合法,如果有问题它会报错。如果这个文件不正确,会导致重启没办法开机。

参考:安装和设置 QEMU/KVM 以在 Ubuntu 24.04 中运行虚拟机

配置docker

安装

换源完毕之后安装docker,通过命令sudo apt install docker.io安装即可

普通用户运行

配置docker允许普通用户运行

  • sudo usermod -aG docker $USER 将当前普通用户加入docker用户组
  • newgrp docker 刷新权限

此时如果可以用普通账户执行docker images那就正常了

需要注意的是,如果容器允许设置uid和gid,那么建议设置为65534,这样保证容器创建的文件所有账户都能访问

换源

通过下面的命令直接换即可 (参考:教程 | 2025国内可用Docker镜像源配置指南(文末命令一键执行)_docker镜像库国内源 2025-CSDN博客

sudo mkdir -p /etc/docker && sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com"
]
}
EOF sudo systemctl daemon-reload && sudo systemctl restart docker

如果有什么故障,重启虚拟机再看看是否正常

执行sudo docker pull hello-world 如果没问题就换源成功了

docker-compose

每次配置好容器之后,最好使用docker-compose管理,这样如果需要重启会很方面,而且docker-compose.yml中也记录了各种参数,只要调试通过一次之后就不会有什么问题了

下载链接:Releases · docker/compose

找到适用于自己机器的文件,保存到/usr/local/bin/docker-compose,然后chmod +x给予执行权限就行

部署Aria2

这个主要用来对接RPC下载

docker-compose.yml内容:Aria2-Pro-Docker/docker-compose.yml at master · P3TERX/Aria2-Pro-Docker

version: "3.8"

services:

  Aria2-Pro:
container_name: aria2-pro
image: p3terx/aria2-pro
environment:
- PUID=65534
- PGID=65534
- UMASK_SET=022
- RPC_SECRET=P3TERX
- RPC_PORT=6800
- LISTEN_PORT=6888
- DISK_CACHE=64M
- IPV6_MODE=false
- UPDATE_TRACKERS=true
- CUSTOM_TRACKER_URL=
- TZ=Asia/Shanghai
volumes:
- ${PWD}/aria2-config:/config
- ${PWD}/aria2-downloads:/downloads
# If you use host network mode, then no port mapping is required.
# This is the easiest way to use IPv6 networks.
network_mode: host
# network_mode: bridge
# ports:
# - 6800:6800
# - 6888:6888
# - 6888:6888/udp
restart: unless-stopped
# Since Aria2 will continue to generate logs, limit the log size to 1M to prevent your hard disk from running out of space.
logging:
driver: json-file
options:
max-size: 1m # AriaNg is just a static web page, usually you only need to deploy on a single host.
AriaNg:
container_name: ariang
image: p3terx/ariang
command: --port 6880 --ipv6
network_mode: host
# network_mode: bridge
# ports:
# - 6880:6880
restart: unless-stopped
logging:
driver: json-file
options:
max-size: 1m

关于这个镜像的说明,可以看:Aria2 Pro - 更好用的 Aria2 Docker 容器镜像 - P3TERX ZONE

这个docker-compose.yml包含两个容器,一个是Aria2 Pro另一个是Ariang,成功运行之后,应该可以通过6880端口访问到Ariang界面,然后在设置中配置rpc密钥为RPC_SECRET对应的字段即可

此外,6800是rpc端口,密码看RPC_SECRET环境变量

这个下载种子没速度,不知道是为什么。。。

v2raya

# docker-compose.yaml
services:
v2raya:
image: mzz2017/v2raya
restart: always
container_name: v2raya
ports:
- "2017:2017"
- "7890:7890"
volumes:
- "./v2raya:/etc/v2raya"

V2RayA-使用docker快速搭建一个自动订阅代理与可视化面板,全面替代clash | Laoyutang

用来运行廉价梯子,完事儿之后需要进设置修改监听端口,并且开启端口分享

你可以通过 curl -x http://127.0.0.1:7890 https://www.google.com来验证梯子是否可用

qbittorrent

Aria2下载种子不是很顺利,最终决定还是使用qbittorrent来下载种子,推荐的容器是: johngong/qbittorrent - Docker Image

version: "3"
services:
qbittorrent:
image: johngong/qbittorrent:latest
container_name: qbittorrent
environment:
- PUID=65534
- PGID=65534
- TZ=Etc/UTC
- QB_WEBUI_PORT=8989
- QB_EE_BIN=false
- TORRENTING_PORT=6881
- UMASK=022
userns_mode: keep-id
volumes:
- ./config:/config
- ./downloads:/Downloads
ports:
- 8989:8989
- 6881:6881
- 6881:6881/udp
restart: unless-stopped

端口是8989,账号是admin,初始密码是在容器的输出中的一个随机密码

容器开机自启

最后配置容器开机自启,就基本上稳妥了,下面以qbittorrent为例子

创建:/etc/systemd/system/docker-compose-qbit.service

[Unit]
Description=qbit
Requires=docker.service
After=docker.service [Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/export/down_docker/qbit
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0 [Install]
WantedBy=multi-user.target
  • sudo systemctl start docker-compose-qbit启动即可(需要先手动执行docker-compose down关闭容器,然后再用这个控制)

  • sudo systemctl stop docker-compose-qbit 关闭容器

  • sudo systemctl enable docker-compose-qbit启动开机自启

如果需要其他容器自启,替换文件名以及DescriptionWorkingDirectory配置的值即可

最终的最终,重启一下虚拟机,看看以上所有东西都正常跑起来了,就没问题了

[爬坑指南] 虚拟机和docker实现下载服务器的更多相关文章

  1. electron-vue开发爬坑指南

    electron-vue开发遇到的爬坑过程,遇到了以下几种坑: 1:静态资源目录访问不了,想访问放在static目录下的静态资源,使用express指定静态目录访问不到,解决办法:使用electron ...

  2. 【爬坑系列】之docker的overlay网络配置(未完,待续)

    理论知识储备: 想了解vxlan网络的知识:https://www.cnblogs.com/shuiguizi/p/10923841.html 想了解docker网络的原理知识:https://www ...

  3. kali linux安装virtualbox虚拟机之爬坑经历

    很多kali爱好者想把kali linux作为系统使用,但是有些win下的程序有时候也需要用到,此时需要虚拟机. kali系统在安装虚拟机的时候也会遇到一大堆坑,接下来是我的爬坑过程. 一波三折. 环 ...

  4. Docker从入门到掉坑(四):上手k8s避坑指南

    在之前的几篇文章中,主要还是讲解了关于简单的docker容器该如何进行管理和操作,在接下来的这篇文章开始,我们将开始进入对于k8s模块的学习 不熟悉的可以先回顾之前的章节,Docker教程系列文章将归 ...

  5. Harmony OS 开发避坑指南——源码下载和编译

    Harmony OS 开发避坑指南--源码下载和编译 本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(Hi3516,Hi3518和Hi3861)的编译环境,以及如何将源码编译为三个 ...

  6. CEF避坑指南(一)——下载并编译第一个示例

    CEF即Chromium Embedded Framework,Chrome浏览器嵌入式框架.它提供了接口供程序员们把Chrome放到自己的程序中.许多大型公司,如网易.腾讯都开始使用CEF进行前端开 ...

  7. Docker入坑指南之RUN

    总有一些场景,我们需要自己制作一个镜像,可以快速还原环境,又不想被其他因素干扰镜像的纯净,这个时候,就可以选择Docker了,启动便捷,镜像还原很快捷,除了上手不容易. 最近入坑研究了一番,小有心得, ...

  8. Tinker + Bugly + Jenkins 爬坑之路

    前阵子 Android 端的线上崩溃比较多,热修复被提上日程.实现方案是 Tinker,Jenkins 打包,最后补丁包上传到 Bugly 进行分发.主要在 Jenkins 打包这一块爬了不少坑,现记 ...

  9. Kubernetes Fluentd+Elasticsearch+Kibana统一日志管理平台搭建的填坑指南

    在初步完成Kubernetes集群架构的建立后,通过搭建一些监控组件,我们已经能够实现 图形化的监控每个node,pod的状态信息和资源情况 通过scale进行replicateSet的扩展和伸缩 通 ...

  10. 【爬坑系列】之vxlan网络实现

    linux 内核从3.7之后就内部集成了vxlan功能,所以可以使用linux内核提供的vxlan功能,经过配置创建vxlan网络. 而从Docker自Docker Engine 1.9之后,就自带o ...

随机推荐

  1. R机器学习:朴素贝叶斯算法的理解与实操

    最近又看了很多贝叶斯算法的一些文章,好多的文章对这个算法解释起来会放一大堆公式,对代数不好的人来说真的很头疼.本文尝试着用大白话写写这个算法,再做个例子,帮助大家理解和运用. Naive Bayes ...

  2. docker-entrypoint.sh 文件的用处

    参考出处很多著名库的 Dockerfile 文件中,通常都是 ENTRYPOINT 字段会是这样: ENTRYPOINT ["docker-entrypoint.sh"]这里我们参 ...

  3. iaas,saas,paas,daas区别:

    iaas,saas,paas,daas区别: Iaas(Infrastructure as a server):基础设施即服务,是基础层.PaaS(Platform as a Server):平台即服 ...

  4. PostgreSQL 的特点

    title: PostgreSQL 的特点 date: 2024/12/24 updated: 2024/12/24 author: cmdragon excerpt: PostgreSQL 是当今最 ...

  5. Vue3使用Vuex 教程(这才是真正的小白教程!)

    我的项目是vue3+element-plus 我是个菜鸡,我不懂前端.想做一个tags的导航标签页.但是点击标签页之后页面仍然是会重新请求.感觉这不就跟没做一样吗? 遂百度GPT,第一种方式采用的就是 ...

  6. 这是我见过最通俗易懂的SVD(奇异值分解)算法介绍

    线性代数是机器学习领域的基础,其中一个最重要的概念是奇异值分解(SVD),本文尽可能简洁的介绍SVD(奇异值分解)算法的基础理解,以及它在现实世界中的应用. SVD是最广泛使用的无监督学习算法之一,它 ...

  7. Failed to run MSBuild command 错误问题解决

    场景:提示:这里简述项目相关背景: CMake 报错 CMake ERROR Failed to run MSBuild command: MSBuild.exe.如下图所示: 问题描述提示:这里描述 ...

  8. DevOps和云计算初识

    什么是云计算分类 公有云:云服务提供商对基础设施实施维护,不需要自己维护:多租户:Pay For Use 成本较低,按需付费就像用水用电一样(阿里云.腾讯云等)私有云:自己维护云基础设施:单租户或狭义 ...

  9. C#添加log4日志

    第一步导入log4net 在vs的程序包管理器控制台中执行命令 NuGet\Install-Package log4net -Version 2.0.0 第二步加帮助类HttpHelper using ...

  10. python读取excel的文件

    1.安装依赖包,并且导入 pip install xlrd   import xlrd 2.打开文件 path = r"C:\Users\xiao\Desktop\服务体系.xls" ...