
虽然 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 我还是习惯去 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 的版本? |