Docker Hub构建中间歇性的"chfn:PAM:系统错误"

HTO*_*TOK 7 github docker

有时,Docker Hub上的自动构建会因PAM系统错误而失败,如下所示,这些错误来自两个独立的构建:

     Preparing to unpack 
    .../mysql-server-5.5_5.5.38-0ubuntu0.14.04.1_amd64.deb ... 
    [91mchfn: PAM: System error 
    [0m 
    [91madduser: '/usr/bin/chfn -f MySQL Server mysql' returned error code 
     1. Exiting.
    [0m
    [91mdpkg: error processing archive 
     /var/cache/apt/archives/mysql-server-5.5_5.5.38-0ubuntu0.14.04.1_amd64.deb 
    (--unpack):
     subprocess new pre-installation script returned error exit status 1
    [0m

     Preparing to unpack 
    .../redis-server_2%3a2.8.4-2_amd64.deb ... 
    [91mchfn: PAM: System error 
    [0m 
    [91madduser: '/usr/bin/chfn -f redis server redis' returned error code 
     1. Exiting. 
    [0m 
    [91mdpkg: error processing archive 
    /var/cache/apt/archives/redis-server_2%3a2.8.4-2_amd64.deb (--unpack): 
     subprocess new pre-installation script returned error exit status 1 
    [0m
Run Code Online (Sandbox Code Playgroud)

有趣的是,这种失败只是间歇性地发生并且使用相同的Dockerfiles.有没有办法解决?

HTO*_*TOK 9

有一个解决方法!这是一个简单的修复,似乎没有任何负面影响.将以下符号链接添加到Dockerfile的顶部:

RUN ln -s -f /bin/true /usr/bin/chfn

后续构建应该成功.


Ree*_*e45 7

这是最近一些内核更新的结果(参见Github问题#6345)

最近更新了内核以允许容器发送审计事件,但是他们需要CAP_AUDIT_WRITE才能编写审计事件.(git-bisect 用于跟踪这个错误

之前,PAM检测到审核不可用/禁用(非致命错误).现在它可用,PAM检测到审计系统并尝试使用它,但无法编写审计事件(致命错误).

可能的解决方案:

  1. 允许容器具有CAP_AUDIT_WRITE(GitHub问题表明这将是默认设置),但DockerHub不允许其在构建系统中授予此功能.

  2. 禁用PAM中的审核支持.有人发布了CentOS 6.5和Ubuntu 14.04的docker镜像来重建PAM并禁用审计.有关如何重建PAM的基本知识,您可以查看CentOSUbuntu的相关Dockerfiles )

  3. /usr/bin/chfn通过链接到/bin/true(ln -s -f /bin/true /usr/bin/chfn)禁用