V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
opengg
V2EX  ›  Linux

分享一下我的 docker aria2 镜像

  •  
  •   opengg · 2017-03-12 19:35:22 +08:00 · 11056 次点击
    这是一个创建于 2818 天前的主题,其中的信息可能已经有所发展或是发生改变。

    虽然 aria2 镜像已经满天飞, 但我没找到符合个人品味的. 于是我花了一点时间写了一个, 在此与诸位分享.

    特色

    1. 极简

    精简的层级, 极致的镜像体积.

    基本上整个镜像就是 alpine + aria2, 没有其他依赖, 镜像体积只有 5.7MB.

    2. 强大

    • 可以指定执行 uid/gid, 兼容宿主系统文件权限
    • 自动创建配置 aria2.conf
    • 自动修复 /config 目录权限
    • 兼容 docker kill 的 graceful exit 机制
    • 兼容 docker logs 的日志机制

    使用

    1. 使用 id 命令确定 uid/gid

        $ id opengg
          uid=1001(opengg) gid=1002(users) groups=1002(users)
      
    2. 初始化配置和下载目录

      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 {} +
      
    3. 运行以下命令初始化容器

      docker run \
        -d \
        --name aria2 \
        -u=1001:1002 \
        -v /storage/aria2/config:/config \
        -v /storage/aria2/downloads:/downloads \
        -p 6800:6800 \
        opengg/aria2
      

    镜像源码

    在此附上源码, 欢迎指正

    https://hub.docker.com/r/opengg/aria2/

    https://github.com/OpenGG/docker-aria2

    31 条回复    2020-02-24 00:38:45 +08:00
    beginor
        1
    beginor  
       2017-03-12 21:02:23 +08:00 via Android
    这个好,正准备做呢😂
    beginor
        2
    beginor  
       2017-03-12 21:04:58 +08:00 via Android
    再整个 aria2 Web ui 就更好了
    Antidictator
        3
    Antidictator  
       2017-03-12 21:13:03 +08:00
    和 IDM 比,如何?
    crs0910
        4
    crs0910  
       2017-03-12 21:28:28 +08:00 via Android
    不错
    nanpuyue
        5
    nanpuyue  
       2017-03-12 21:28:51 +08:00
    有个问题,这种单应用,为何要用 docker 镜像?
    opengg
        6
    opengg  
    OP
       2017-03-12 22:44:18 +08:00
    @beginor webui 用 github 上的就可以了, 不需要部署到本地服务器
    opengg
        7
    opengg  
    OP
       2017-03-12 22:45:00 +08:00
    @nanpuyue 部署和管理进程还是费劲, 不如交给 docker.
    opengg
        8
    opengg  
    OP
       2017-03-12 22:54:22 +08:00
    @Antidictator 跟 idm 的场景不同, idm 是在用户端, 下载到用户的硬盘上, docker 适合在服务器上部署, 比如说这个 docker aria2, 做下载服务器用.
    messyidea
        9
    messyidea  
       2017-03-12 23:03:30 +08:00   ❤️ 1
    我还是习惯去 github 下个静态链接的版本配合自己的配置文件直接跑
    更新的话只需要替换二进制文件就行了 = =
    https://github.com/q3aql/aria2-static-builds.git
    phithon
        10
    phithon  
       2017-03-12 23:06:34 +08:00
    感谢~
    minsnia
        11
    minsnia  
       2017-03-12 23:35:01 +08:00
    强迫症表示 aria2 为什么不用最新版
    Antidictator
        12
    Antidictator  
       2017-03-13 00:35:46 +08:00 via Android
    @opengg great and thx
    ETiV
        13
    ETiV  
       2017-03-13 04:44:40 +08:00 via iPhone
    看到 opengg 就想到了优酷播放器
    ETiV
        14
    ETiV  
       2017-03-13 04:46:00 +08:00 via iPhone
    & 我一般都去掉 -x -s 最大 16 的参数限制,自己编译 aria2 ……
    iTea
        15
    iTea  
       2017-03-13 07:20:23 +08:00 via iPhone
    感谢分享:)
    laincat
        16
    laincat  
       2017-03-13 09:05:56 +08:00 via iPhone
    这个最近刚想找个类似的来用,感谢。
    opengg
        17
    opengg  
    OP
       2017-03-13 10:26:34 +08:00
    @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
    opengg
        18
    opengg  
    OP
       2017-03-13 10:28:07 +08:00
    @ETiV
    aria2 16 线程基本够用了, 我试过百度云能跑满 30MB/s, 所以就先这样了
    crystone
        19
    crystone  
       2017-03-13 10:57:49 +08:00
    你们真牛
    kojirou
        20
    kojirou  
       2017-03-13 19:15:32 +08:00
    一行命令的事为啥用 docker 。。
    opengg
        21
    opengg  
    OP
       2017-03-14 20:21:12 +08:00   ❤️ 1
    @kojirou
    1. docker 部署方便, 尤其是在 nas 上, 有些系统安装依赖和包很麻烦, 比如群晖, 用 docker 就更快捷.
    2. 管理进程费劲, 用 docker 有 auto start/restart
    fetich
        22
    fetich  
       2017-11-23 10:50:00 +08:00
    楼主,我是在群晖上使用 Docker。
    请问第一步和第二步在哪里输入命令呢?第三步初始化容器,在群晖里只需要点击按钮即可,没找到可以输入命令的地方啊?
    fetich
        23
    fetich  
       2017-11-24 09:26:11 +08:00
    群晖的操作流程太傻瓜了,设置完毕,特意回来留言。
    fetich
        24
    fetich  
       2017-11-24 15:14:20 +08:00
    楼主,为什么下载的进度无法保存呢?在群晖 DSM 中重启容器后,已完成的任务和做种任务都消失了,是 aria2.session 的权限问题么?该怎么解决呢?
    Maskeney
        25
    Maskeney  
       2019-04-28 12:40:13 +08:00 via Android
    现在为什么改成-u 指定用户 UID GID 了…这个参数搞得我一脸蒙蔽。为什么不用-e UID=1000 -e GID=1000 …之前用 portainer,表示并不知道这个-u 应该填哪一项。昨晚上试着-v 多挂了几个数据卷。结果运行之后自动关闭,也没来得及看日志,不知道啥原因
    opengg
        26
    opengg  
    OP
       2019-05-06 15:10:12 +08:00
    @Maskeney
    -u 是 docker 的参数,docker 容器会以这个 uid/gid 执行。
    -e uid=xxx 是 dockerfile 的参数,docker 容器先以 root 运行,然后在容器内部脚本被执行时降权到 uid

    uid/gid 通过 id 命令来确定。
    opengg
        27
    opengg  
    OP
       2019-05-06 15:14:13 +08:00
    @fetich
    已完成的任务和做种任务消失,可能是权限问题吧,你得确保 docker 容器运行用户对 config 目录有合适的读写权。
    fetich
        28
    fetich  
       2019-05-06 17:23:39 +08:00
    @opengg
    天哪,楼主出宫!

    这个问题已解决,反反复复尝试了好多次,记得和 session 记录、磁链保存的配置项有关。
    Maskeney
        29
    Maskeney  
       2019-05-06 18:10:03 +08:00
    @opengg #26 好吧 作为刚上手的初级用户 喜欢用 portainer 这种图形化来运行 docker,portainer 似乎是只有 env 选项,没有-u 选项可供输入,市面上很多预编译好的镜像似乎更倾向于用-e 来传递 UID GID,虽然看起来用-u 直接指定更好
    Maskeney
        30
    Maskeney  
       2019-05-25 00:39:48 +08:00
    楼主请问后续有给这个镜像添加设置 umask 的功能么?我是给每个容器都创建了各自的 daemon 用户,虽然 /etc/profile 里设置了全局 umask=0002,但是 aria2 运行起来还是按照默认的 0022umask,因此会导致下载的文件权限不符合预期
    fetich
        31
    fetich  
       2020-02-24 00:38:45 +08:00
    大兄弟,不知道你是否还在上 V 站。

    有个奇怪的事,1.35.0 已经出来数个月了,为何拉取最新镜像仍然是 1.34.0 的版本?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3013 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:34 · PVG 08:34 · LAX 16:34 · JFK 19:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.