You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Ubuntu:22.04 Docker最小容器时遇无效ELF头错误求助

Docker容器"invalid ELF header"错误排查与解决

问题描述

作业中需修改Dockerfile暴露额外端口,此前容器运行正常,但重建时频繁出现invalid ELF header错误。注释所有RUN命令后成功构建镜像,但运行精简容器时仍报错:

2024-03-11 08:44:52 /bin/bash: error while loading shared libraries: /lib/x86_64-linux-gnu/libtinfo.so.6: invalid ELF header

容器随即停止,最初执行apt-get命令时就出现类似错误,问题范围较广。

附注释后的Dockerfile:

# TODO: set base image
FROM ubuntu:22.04

ARG IMAGE_NAME=nets2120

# Install packages
# TODO: Add packages (reference handout)

# RUN apt-get update 
# && \
# apt-get install -y \
# wget \
# curl \
# tar \
# unzip \
# openjdk-21-jdk \
# maven \
# nodejs \
# npm \
# nginx 

# Set up Spark
ENV SPARK_VERSION=3.5.0 \
    HADOOP_VERSION=3
ENV SPARK_HOME=/usr/local/spark-$SPARK_VERSION-bin-hadoop$HADOOP_VERSION

# RUN wget -q https://dlcdn.apache.org/spark/spark-$SPARK_VERSION/spark-$SPARK_VERSION-bin-hadoop$HADOOP_VERSION.tgz -O spark.tgz
# RUN tar -xzf spark.tgz -C /usr/local \
#     && ln -s /usr/local/spark-$SPARK_VERSION-bin-hadoop$HADOOP_VERSION /usr/local/spark
# RUN rm spark.tgz

# Set up Livy
ENV LIVY_VERSION=0.8.0 \
    INCUBATING_VERSION=2.11
ENV LIVY_HOME=/usr/local/apache-livy-$LIVY_VERSION-incubating_$INCUBATING_VERSION-bin

# RUN wget -q https://dlcdn.apache.org/incubator/livy/$LIVY_VERSION-incubating/apache-livy-$LIVY_VERSION-incubating_$INCUBATING_VERSION-bin.zip -O livy.zip
# RUN unzip livy.zip -d /usr/local && ln -s $LIVY_HOME /usr/local/livy
# RUN rm livy.zip

# Update PATH
ENV PATH=$PATH:$SPARK_HOME/bin:$LIVY_HOME/bin

# TODO: Set up ports (80 for Nginx, 4567 for SparkJava, 8080 for Spark UI, 8998 for Livy)
EXPOSE 80
EXPOSE 4567
EXPOSE 8080
EXPOSE 8998
EXPOSE 3000

# Set working directory
WORKDIR /$IMAGE_NAME

# Clean up to reduce image size
# RUN apt-get clean && rm -rf /var/lib/apt/lists/*

解决建议

  • 清理并重新拉取基础镜像
    本地的ubuntu:22.04镜像可能已损坏,执行以下命令重置:

    docker rmi ubuntu:22.04
    docker pull ubuntu:22.04
    

    之后重新构建并运行容器。

  • 检查CPU架构兼容性
    如果在ARM架构设备(如Apple Silicon Mac)上运行x86_64镜像,可能出现模拟异常:

    1. 查看本地架构:uname -m
    2. 若为arm64,确保拉取对应架构的ubuntu镜像(Docker通常自动匹配,但若异常可手动指定)
    3. 开启Docker Desktop的Rosetta模拟(针对Apple Silicon):进入设置 > Features in development > 勾选"use Rosetta for x86/amd64 emulation"
  • 重启Docker服务
    Docker daemon异常可能导致镜像文件处理错误:

    • Linux:sudo systemctl restart docker
    • Mac/Windows:在Docker Desktop界面点击重启按钮
  • 清理所有Docker缓存
    若本地存储存在坏块或缓存冲突,执行全面清理:

    docker system prune -a
    

    清理完成后重新拉取镜像并构建。

内容的提问来源于stack exchange,提问作者Faraz Rahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 01:28:17