这是一个用于学习 Docker 的最小 Python 项目。程序启动后会输出:
Hello Docker- Python 版本
- Requests 版本
docker_study/
├── Dockerfile
├── main.py
├── requirements.txt
└── README.md
main.py:Python 程序入口。requirements.txt:Python 第三方依赖列表。Dockerfile:定义如何构建 Docker 镜像以及容器启动时执行什么命令。
请先安装并启动 Docker Desktop,然后确认 Docker 可以使用:
docker --version在项目根目录执行:
docker build -t python-docker-demo .其中:
docker build表示构建镜像。-t python-docker-demo给镜像设置名称。- 最后的
.表示使用当前目录中的Dockerfile和项目文件。
查看本机镜像:
docker imagesdocker run --rm python-docker-demo预期输出类似:
Hello Docker
Python version: 3.11.x
Requests version: 2.x.x
这条命令会根据镜像创建一个容器,并在容器中运行 main.py。程序结束后容器停止,--rm 会自动删除该容器,但不会删除镜像。
如果想在 Docker Desktop 中看到运行结束的容器,可以去掉 --rm:
docker run --name my-python-container python-docker-demo查看所有容器,包括已经停止的容器:
docker ps -a再次启动该容器并查看输出:
docker start -a my-python-container不再需要时删除容器:
docker rm my-python-container镜像中保存的是执行 docker build 时复制进去的代码。修改 main.py 后,需要重新构建镜像,再运行新容器:
docker build -t python-docker-demo .
docker run --rm python-docker-demoDocker 会复用没有变化的构建缓存,所以只修改代码时,通常不需要重新下载所有内容。
Dockerfile 使用以下基础镜像:
FROM python:3.11-slim这会使用当前可获得的 Python 3.11 补丁版本。requirements.txt 中的:
requests>=2.31,<3
表示安装 Requests 2.31 或更高版本,但不安装 3.x 版本。
构建过程依次完成:
- 使用
python:3.11-slim作为基础环境。 - 将容器中的工作目录设置为
/app。 - 复制并安装
requirements.txt中的依赖。 - 将
main.py复制到镜像中。 - 容器启动时自动执行
python main.py。
可以简单理解为:
Dockerfile → docker build → 镜像 → docker run → 容器