Skip to content

Erick200404/docker_study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Python Docker 入门示例

这是一个用于学习 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 images

运行容器

docker 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-demo

Docker 会复用没有变化的构建缓存,所以只修改代码时,通常不需要重新下载所有内容。

版本说明

Dockerfile 使用以下基础镜像:

FROM python:3.11-slim

这会使用当前可获得的 Python 3.11 补丁版本。requirements.txt 中的:

requests>=2.31,<3

表示安装 Requests 2.31 或更高版本,但不安装 3.x 版本。

Dockerfile 做了什么

构建过程依次完成:

  1. 使用 python:3.11-slim 作为基础环境。
  2. 将容器中的工作目录设置为 /app
  3. 复制并安装 requirements.txt 中的依赖。
  4. main.py 复制到镜像中。
  5. 容器启动时自动执行 python main.py

可以简单理解为:

Dockerfile → docker build → 镜像 → docker run → 容器

About

学习docker时使用

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors