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

将文件映射到Podman容器后容器内无该文件的问题求助

问题

我尝试将一个Python程序部署到Podman容器中,该程序需要配置文件位于容器内的/etc/cdr_arhive.conf路径。参考博客及帖子的方法创建带卷映射的容器,但尝试多种参数组合均无效。

Dockerfile内容

FROM python:3.11

RUN groupadd -g 1000 python && \
    useradd -r -u 1000 -g python python

COPY ../requirements.txt .
RUN pip install -r requirements.txt

RUN mkdir /app && chown python:python /app
WORKDIR /app

COPY main.py minio_controller.py mysqldump.py storage_controller.py db-checks.py .
RUN mkdir util
COPY util/ util/

USER 1000

CMD ["python"]

构建并创建容器的命令及输出

johan@kompir ~/P/cdr-archiver (master)> podman build -t cdrarchiver .
STEP 1/11: FROM python:3.11
STEP 2/11: RUN groupadd -g 1000 python &&     useradd -r -u 1000 -g python python
--> Using cache 9f36ca3676187e5b58180cd124c37c246ae6ee41fcf4163850635b7f55813dd5
--> 9f36ca36761
STEP 3/11: COPY ../requirements.txt .
--> Using cache 33e56da82582af392371e3af89abd757ecf55bf4bbeb8beafbbd88e27c5fb6b3
--> 33e56da8258
STEP 4/11: RUN pip install -r requirements.txt
--> Using cache 08c45ba7ab9157ea2bc576f5b2405378f71917a089f4a2b35a9e4d8b85012835
--> 08c45ba7ab9
STEP 5/11: RUN mkdir /app && chown python:python /app
--> Using cache 58620616aa86938ebe43c3e46a9c0e929f94b36f771e7b11ed0847fd5b522afd
--> 58620616aa8
STEP 6/11: WORKDIR /app
--> Using cache 8b11db9a1afcda370b8aef5e2cfb8d6e291eabf688754340964ba17814f7f857
--> 8b11db9a1af
STEP 7/11: COPY main.py minio_controller.py mysqldump.py storage_controller.py db-checks.py .
--> 2db0b02eee9
STEP 8/11: RUN mkdir util
--> ba4ff005421
STEP 9/11: COPY util/ util/
--> 6ba25a873e3
STEP 10/11: USER 1000
--> 6bc9cd1ef9f
STEP 11/11: CMD ["python"]
COMMIT cdrarchiver
--> c14101cdda0
Successfully tagged localhost/cdrarchiver:latest
c14101cdda0cb476b4868e514f32cc496a2ba8e743fa6ff7bf51baf49bd1232b

映射配置文件到容器的操作

johan@kompir ~/P/cdr-archiver (master)> cp /etc/cdr_archive.conf .
johan@kompir ~/P/cdr-archiver (master) [1]> ls -l cdr_archive.conf 
-rw-r--r-- 1 johan johan 561 Apr 29 08:06 cdr_archive.conf
johan@kompir ~/P/cdr-archiver (master)> podman create --name cdr_archiver -v $PWD/cdr_archive.conf:/etc/cdr_archive.conf cdrarchiver
c78baa6b74fdce5ace5803e4931374ee39a7a23101cd325cc2a953ceeeb5031f

问题现象

运行程序时出现Python异常,提示无法读取配置文件(文件缺失时的预期表现)。通过验证,容器内确实没有该文件:

johan@kompir ~/P/cdr-archiver (master)> podman run -i -t localhost/cdrarchiver ls -l /etc/cdr_archive.conf
ls: cannot access '/etc/cdr_archive.conf': No such file or directory

环境信息:Fedora 39系统,Podman 3.4.2版本。尚未尝试以root身份运行,但即使可行也不是可接受的解决方案。

解决方案
  • 容器启动方式错误:你用podman create创建了带卷映射的容器cdr_archiver,但后续用podman run直接启动镜像,相当于新建了一个无映射的容器,自然找不到配置文件。正确做法是启动已创建好的容器:

    podman start -i cdr_archiver
    

    或者直接在run命令中加入卷映射参数一步完成:

    podman run -i -t -v $PWD/cdr_archive.conf:/etc/cdr_archive.conf localhost/cdrarchiver ls -l /etc/cdr_archive.conf
    
  • 检查路径拼写一致性:注意你描述中程序需要的路径是/etc/cdr_arhive.conf(少了一个字母c),但映射命令中用的是/etc/cdr_archive.conf,需确保程序读取路径和映射路径完全一致,避免拼写错误导致文件找不到。

  • 验证文件读取权限:容器以UID 1000的python用户运行,需确保宿主机上的cdr_archive.conf文件允许该用户读取。可先修改宿主机文件权限:

    chmod o+r $PWD/cdr_archive.conf
    

内容的提问来源于Stack Exchange,提问作者VagrantPaladin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:27:55