虽然 aria2 镜像已经满天飞, 但我没找到符合个人品味的. 于是我花了一点时间写了一个, 在此与诸位分享.
精简的层级, 极致的镜像体积.
基本上整个镜像就是 alpine + aria2, 没有其他依赖, 镜像体积只有 5.7MB.
aria2.conf
/config
目录权限docker kill
的 graceful exit 机制docker logs
的日志机制使用 id
命令确定 uid/gid
$ id opengg
uid=1001(opengg) gid=1002(users) groups=1002(users)
初始化配置和下载目录
mkdir /storage/aria2/config # config 路径示例
chown -R 1001:1002 /storage/aria2/config
find /storage/aria2/config -type d -exec chmod 755 {} +
find /storage/aria2/config -type f -exec chmod 644 {} +
mkdir /storage/aria2/downloads # downloads 路径示例
chown -R 1001:1002 /storage/aria2/downloads
find /storage/aria2/downloads -type d -exec chmod 755 {} +
find /storage/aria2/downloads -type f -exec chmod 644 {} +
运行以下命令初始化容器
docker run \
-d \
--name aria2 \
-u=1001:1002 \
-v /storage/aria2/config:/config \
-v /storage/aria2/downloads:/downloads \
-p 6800:6800 \
opengg/aria2
在此附上源码, 欢迎指正
1
beginor 2017-03-12 21:02:23 +08:00 via Android
这个好,正准备做呢😂
|
2
beginor 2017-03-12 21:04:58 +08:00 via Android
再整个 aria2 Web ui 就更好了
|
3
Antidictator 2017-03-12 21:13:03 +08:00
和 IDM 比,如何?
|
4
crs0910 2017-03-12 21:28:28 +08:00 via Android
不错
|
5
nanpuyue 2017-03-12 21:28:51 +08:00
有个问题,这种单应用,为何要用 docker 镜像?
|
8
opengg OP @Antidictator 跟 idm 的场景不同, idm 是在用户端, 下载到用户的硬盘上, docker 适合在服务器上部署, 比如说这个 docker aria2, 做下载服务器用.
|
9
messyidea 2017-03-12 23:03:30 +08:00 1
我还是习惯去 github 下个静态链接的版本配合自己的配置文件直接跑
更新的话只需要替换二进制文件就行了 = = https://github.com/q3aql/aria2-static-builds.git |
10
phithon 2017-03-12 23:06:34 +08:00
感谢~
|
11
minsnia 2017-03-12 23:35:01 +08:00
强迫症表示 aria2 为什么不用最新版
|
12
Antidictator 2017-03-13 00:35:46 +08:00 via Android
@opengg great and thx
|
13
ETiV 2017-03-13 04:44:40 +08:00 via iPhone
看到 opengg 就想到了优酷播放器
|
14
ETiV 2017-03-13 04:46:00 +08:00 via iPhone
& 我一般都去掉 -x -s 最大 16 的参数限制,自己编译 aria2 ……
|
15
iTea 2017-03-13 07:20:23 +08:00 via iPhone
感谢分享:)
|
16
laincat 2017-03-13 09:05:56 +08:00 via iPhone
这个最近刚想找个类似的来用,感谢。
|
17
opengg OP @minsnia
是最新版 Aria2. 实际上有三个分支: opengg/aria2:latest 对应 master 分支, alpine:latest 系统 + aria2:edge, aria2 版本为最新的 1.31.0, 默认这个分支 opengg/aria2:stable 对应 stable 分支, alpine:latest 系统 + aria2:latest, aria2 版本为旧一点的 1.26.1, 适合稳定人士使用 opengg/aria2:edge 对应 edge 分支, alpine:edge 系统 + aria2:edge, aria2 版本为最新的 1.31.0, 适合激进人士使用 具体可以看源码 https://github.com/OpenGG/docker-aria2 |
19
crystone 2017-03-13 10:57:49 +08:00
你们真牛
|
20
kojirou 2017-03-13 19:15:32 +08:00
一行命令的事为啥用 docker 。。
|
21
opengg OP @kojirou
1. docker 部署方便, 尤其是在 nas 上, 有些系统安装依赖和包很麻烦, 比如群晖, 用 docker 就更快捷. 2. 管理进程费劲, 用 docker 有 auto start/restart |
22
fetich 2017-11-23 10:50:00 +08:00
楼主,我是在群晖上使用 Docker。
请问第一步和第二步在哪里输入命令呢?第三步初始化容器,在群晖里只需要点击按钮即可,没找到可以输入命令的地方啊? |
23
fetich 2017-11-24 09:26:11 +08:00
群晖的操作流程太傻瓜了,设置完毕,特意回来留言。
|
24
fetich 2017-11-24 15:14:20 +08:00
楼主,为什么下载的进度无法保存呢?在群晖 DSM 中重启容器后,已完成的任务和做种任务都消失了,是 aria2.session 的权限问题么?该怎么解决呢?
|
25
Maskeney 2019-04-28 12:40:13 +08:00 via Android
现在为什么改成-u 指定用户 UID GID 了…这个参数搞得我一脸蒙蔽。为什么不用-e UID=1000 -e GID=1000 …之前用 portainer,表示并不知道这个-u 应该填哪一项。昨晚上试着-v 多挂了几个数据卷。结果运行之后自动关闭,也没来得及看日志,不知道啥原因
|
26
opengg OP @Maskeney
-u 是 docker 的参数,docker 容器会以这个 uid/gid 执行。 -e uid=xxx 是 dockerfile 的参数,docker 容器先以 root 运行,然后在容器内部脚本被执行时降权到 uid uid/gid 通过 id 命令来确定。 |
27
opengg OP @fetich
已完成的任务和做种任务消失,可能是权限问题吧,你得确保 docker 容器运行用户对 config 目录有合适的读写权。 |
29
Maskeney 2019-05-06 18:10:03 +08:00
@opengg #26 好吧 作为刚上手的初级用户 喜欢用 portainer 这种图形化来运行 docker,portainer 似乎是只有 env 选项,没有-u 选项可供输入,市面上很多预编译好的镜像似乎更倾向于用-e 来传递 UID GID,虽然看起来用-u 直接指定更好
|
30
Maskeney 2019-05-25 00:39:48 +08:00
楼主请问后续有给这个镜像添加设置 umask 的功能么?我是给每个容器都创建了各自的 daemon 用户,虽然 /etc/profile 里设置了全局 umask=0002,但是 aria2 运行起来还是按照默认的 0022umask,因此会导致下载的文件权限不符合预期
|
31
fetich 2020-02-24 00:38:45 +08:00
大兄弟,不知道你是否还在上 V 站。
有个奇怪的事,1.35.0 已经出来数个月了,为何拉取最新镜像仍然是 1.34.0 的版本? |