
1. 创建python hello-world 项目mkdir -p ~/python-hello cd ~/python-hello创建hello.pynano hello.py内容print(Hello, World from Python in Ubuntu Docker!)ctrl X 保存退出。2. 创建Dockerfilenano Dockerfile内容FROM python:3.11-slim WORKDIR /app COPY hello.py . CMD [python3, hello.py]说明FROM python:3.11-slim使用 python:3.11-slim 作为运行环境docker 在build时会自动拉取。WORKDIR /app设置容器内工作目录。COPY hello.py .把宿主机当前目录的hello.py复制到容器的WORKDIR下此处是拷贝到容器内的/app下。CMD [...]容器启动时打开命令行终端进入WORKDIR执行python3 hello.py。3. 构建镜像在~/python-hello目录下执行sudo docker build -t python-hello .说明-t是--tag的简写表示给构建出来的镜像打标签。python-hello是镜像名。如果没有写:版本号Docker 默认使用latest。. 表示构建上下文路径这里是当前目录。Docker 会把当前目录下的文件发送给 Docker 守护进程用于构建。Dockerfile 默认也会在当前目录下查找文件名必须是Dockerfile4. 运行镜像sudo docker run --rm python-hello输出应该为Hello, World from Python in Ubuntu Docker!5. 封装镜像用于离线部署重新构建镜像打上版本标签cd /path/to/python-hello sudo docker build -t python-hello:v1 .导出镜像为 tar 文件sudo docker save -o python-hello-v1.tar python-hello:v1或者用 gzip 压缩体积更小sudo docker save python-hello:v1 | gzip python-hello-v1.tar.gz封装完后可以在当前工作目录下看到.tar文件或 .tar.gz文件。说明由于在Dockerfile文件中有个命令COPY hello.py .这一步会把hello.py复制进镜像。所以最终镜像里就包含了这个文件。而docker save导出的 tar 文件本质上是把整个镜像包括所有层和元数据打包因此hello.py也会被一起打包进去。docker save导出的 tar 不是普通文件系统的快照而是 Docker 镜像的归档格式因此hello.py会被放在某一层的 tar 文件里而不是直接出现在最外层。6. 在目标机器上导入镜像# 如果导出的是 tar sudo docker load -i python-hello-v1.tar # 如果导出的是 tar.gz gunzip -c python-hello-v1.tar.gz | sudo docker load导入后查看sudo docker images | grep python-hello运行导入的容器sudo docker run --rm python-hello:v1