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

Ubuntu18.08环境下Dockerfile位置查找与编辑操作方法

问题背景

使用Docker容器运行依赖OpenCV等图形处理库的程序时,常见报错:
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
该问题是容器内缺少对应系统共享依赖导致,需要通过Dockerfile配置固化依赖解决,以下针对Ubuntu 18.04系统下、Docker新手的两个核心疑问给出操作说明。

核心疑问1:Dockerfile在哪里可以找到
  • Dockerfile不是Docker安装后自动生成的系统文件,也不是pull下来的公共镜像里自带可直接编辑的文件,它是用户自定义构建镜像时,自行创建的无后缀纯文本配置文件。
  • 如果你之前仅通过docker pull拉取现成公共镜像、从未自己构建过镜像,本地不存在对应镜像的Dockerfile,需要自行新建。
  • 如果你是跟着开源项目部署,项目根目录下文件名为Dockerfile、没有任何后缀名的文件,就是对应的构建配置文件。
核心疑问2:如何编辑修改Dockerfile修复报错

全程在Ubuntu 18.04终端操作即可,步骤如下:

  1. 新建一个单独的构建工作目录,执行命令进入目录:
    mkdir docker_build && cd docker_build
    
  2. 在当前目录下新建无后缀的Dockerfile文件,用nano编辑器(新手友好,不用记复杂快捷键)打开编辑:
    nano Dockerfile
    
  3. 按以下格式写配置内容,第一行替换成你之前一直在用的基础镜像名即可,比如你之前用的是python3.9镜像就写FROM python:3.9:
    # 替换为你实际使用的基础镜像
    FROM 你原来用的镜像名:标签
    # 安装缺失的libGL依赖,Ubuntu/Debian系基础镜像通用
    RUN apt-get update && apt-get install -y libgl1-mesa-glx libglib2.0-0
    # 清理安装缓存减小镜像体积
    RUN apt-get clean && rm -rf /var/lib/apt/lists/*
    # 后续可以接你原本需要的配置,比如安装python依赖、复制项目代码、配置启动命令等
    
  4. 按Ctrl+O保存,回车确认文件名,再按Ctrl+X退出编辑器。
  5. 在当前Dockerfile所在目录下执行构建命令,生成带依赖的自定义镜像,注意命令最后有个.不能漏:
    docker build -t my_fixed_image .
    
  6. 构建完成后,用新生成的my_fixed_image镜像创建容器运行程序,就不会再触发libGL相关的导入报错。

注意:不要直接进入正在运行的容器执行apt安装依赖,容器被删除后所有内部修改都会丢失,只有写在Dockerfile里的配置会永久固化到镜像中,后续基于该镜像创建的所有容器都自带对应依赖。

内容的提问来源于stack exchange,提问作者Life is full of Learning

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:24:13