Centos 7 docker yum安装卡住



当我试图构建Dockerfile docker build -t agent .时,我的构建过程卡住了yum安装过程,它在我的Linux和Windows上都走得更远:

+ yum -q install -y bash bzip2-devel ca-certificates curl epel-release gcc gcc-c++ git gnutls gnutls-devel libffi-devel make ncurses-devel openssh-clients openssh-server openssl openssl-devel rsync readline-devel tar unzip wget zip zlib-devel temurin-11-jdk
Package bash-4.2.46-35.el7_9.x86_64 already installed and latest version
Package ca-certificates-2022.2.54-74.el7_9.noarch already installed and latest version
Package curl-7.29.0-59.el7_9.1.x86_64 already installed and latest version
Package 2:tar-1.26-35.el7.x86_64 already installed and latest version

Dockerfile代码

FROM centos:7
RUN set -ex &&  echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' > /etc/nsswitch.conf
RUN set -ex && yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
RUN set -ex && yum -q install -y docker-ce docker-ce-cli containerd.io
# -- Install OS packages:
RUN set -ex && yum -q update -y && yum -q install -y 
    bash 
    bzip2-devel 
    ca-certificates 
    curl 
    epel-release 
    gcc 
    gcc-c++ 
    git 
    gnutls 
    gnutls-devel 
    libffi-devel 
    make 
    ncurses-devel 
    openssh-clients 
    openssh-server 
    openssl 
    openssl-devel 
    rsync 
    readline-devel 
    tar 
    unzip 
    wget 
    zip 
    zlib-devel 
    temurin-11-jdk

我试着构建其他centos映像,它构建得很好,甚至尝试了Ubuntu和其他随机映像。此问题仅在此Dockerfile

中存在。

你正在击中这个错误(也看到这个拉请求与修复)。旧版本的rpm(如CentOS 7)包含尝试在所有文件描述符上设置CLOEXEC标志的代码。由于Docker对文件数量设置了很高的限制(1073741816),导致此过程耗时过长。

最简单的解决方法——如果你被迫使用像CentOS 7这样的旧发行版——是在运行yum:

之前降低限制:
FROM centos:7
RUN echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' > /etc/nsswitch.conf
RUN yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
RUN ulimit -n 1024 && yum -q install -y docker-ce docker-ce-cli containerd.io
# -- Install OS packages:
RUN ulimit -n 1024 && yum -q update -y && yum -q install -y 
    bash 
    bzip2-devel 
    ca-certificates 
    curl 
    epel-release 
    gcc 
    gcc-c++ 
    git 
    gnutls 
    gnutls-devel 
    libffi-devel 
    make 
    ncurses-devel 
    openssh-clients 
    openssh-server 
    openssl 
    openssl-devel 
    rsync 
    readline-devel 
    tar 
    unzip 
    wget 
    zip 
    zlib-devel 
    temurin-11-jdk

使用上面的Dockerfile:

$ time docker build -t yumtest .
[...]
Successfully built e5ae777ff3ff
Successfully tagged yumtest:latest
real    1m2.668s
user    0m0.008s
sys     0m0.015s

最新更新