如何将Docker容器内Bandit扫描输出文件复制到主机?
解决Docker容器内Bandit扫描输出文件的保存问题
先修正你的Dockerfile问题
你的CMD指令写法有误,exec格式(方括号)需要将命令拆分为独立参数,否则容器会无法找到对应命令。修正后的Dockerfile如下:
FROM python:3-alpine WORKDIR / RUN pip install bandit RUN apk update && apk upgrade RUN apk add git RUN git clone https://github.com/PyCQA/bandit.git ./code-to-scan # 修正CMD的参数拆分格式 CMD ["python", "-m", "bandit", "-r", "./code-to-scan", "-o", "bandit.txt"]
方法一:手动复制容器内的输出文件
容器运行完成后(即使已退出),可通过docker cp命令将输出文件复制到主机:
- 构建镜像:
docker build -t bandit-scan . - 运行容器并指定名称(方便后续操作):
docker run --name bandit-run bandit-scan - 将容器内的
bandit.txt复制到主机当前目录:docker cp bandit-run:/bandit.txt ./bandit-result.txt - (可选)删除已完成任务的容器:
docker rm bandit-run
方法二:使用Docker挂载卷(推荐)
通过挂载主机目录到容器内,让Bandit直接将输出写入主机目录,容器销毁后文件依然保留:
- 在主机创建用于存放输出的目录:
mkdir ./bandit-output - 运行容器时挂载目录,并指定Bandit输出到挂载路径:
也可以修改Dockerfile默认输出到挂载目录,简化运行命令:docker run -v $(pwd)/bandit-output:/output bandit-scan python -m bandit -r ./code-to-scan -o /output/bandit.txt
之后只需运行:FROM python:3-alpine WORKDIR / RUN pip install bandit RUN apk update && apk upgrade RUN apk add git RUN git clone https://github.com/PyCQA/bandit.git ./code-to-scan # 创建容器内的输出目录,用于挂载 RUN mkdir /output CMD ["python", "-m", "bandit", "-r", "./code-to-scan", "-o", "/output/bandit.txt"]
扫描完成后,主机的docker run -v $(pwd)/bandit-output:/output bandit-scan./bandit-output/bandit.txt就是扫描结果。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

