千家信息网

第一次构建、运行、发布、获取docker镜像的步骤详解

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,1、前言过去,如果您要开始编写Python应用程序,第一步就是把Python的运行环境安装到您的机器上,而且安装的环境还要和线上的一致,比较麻烦。使用Docker,您可以从docker的官方regis
千家信息网最后更新 2026年11月03日第一次构建、运行、发布、获取docker镜像的步骤详解

1、前言

过去,如果您要开始编写Python应用程序,第一步就是把Python的运行环境安装到您的机器上,而且安装的环境还要和线上的一致,比较麻烦。

使用Docker,您可以从docker的官方registry或者其他仓库,获取一个可移植的Python运行环境镜像,无需安装。然后,你可以基于这个镜像开发你的应用程序,这样可以确保您的应用程序,依赖项和运行时都一起运行。

2、构建一个python镜像

2.1、为了构建您自己的镜像,首先需要创建一个名称为Dockerfile的文件,用于定义创建镜像并运行container所需的步骤。 Dockerfile中的每条指令都会在镜像中创建一个层级。当您更改Dockerfile并重新build镜像时,只重建那些更改的层级。与其他虚拟化技术相比,这是使镜像轻量,小巧,快速的一个原因。

创建一个空目录,创建一个名为Dockerfile的文件,将以下内容复制并粘贴到该文件中并保存。

# Use an official Python runtime as a parent imageFROM python:2.7-slim# Set the working directory to /appWORKDIR /app# Copy the current directory contents into the container at /appADD . /app# Install any needed packages specified in requirements.txtRUN pip install --trusted-host pypi.python.org -r requirements.txt# Make port 80 available to the world outside this containerEXPOSE 80# Define environment variableENV NAME World# Run app.py when the container launchesCMD ["python", "app.py"]

2.2 在与Dockerfile文件同一个目录下,创建requirements.txt和app.py文件。因为Dockerfile文件的ADD命令,上面的两个文件会被加到最终的镜像中;因为EXPOSE命令,访问容器的80端口,才可以访问到app.py的内容,注意:这里的80端口指的是容器暴露的端口,并不是实际机器的端口。
requirements.txt

Flask
Redis

app.py

from flask import Flaskfrom redis import Redis, RedisErrorimport osimport socket# Connect to Redisredis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)app = Flask(__name__)@app.route("/")def hello():  try:    visits = redis.incr("counter")  except RedisError:    visits = "cannot connect to Redis, counter disabled"  html = "

Hello {name}!

" \ "Hostname: {hostname}
" \ "Visits: {visits}" return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)if __name__ == "__main__": app.run(host='0.0.0.0', port=80)

2.3 把我们的应用打包为镜像,要在DockerFile目录下执行。这会创建一个Docker镜像,我们将使用-t标记它,以使镜像有一个友好的名称。

docker build -t friendlyhello

3 、运行镜像

运行应用程序,使用-p将机器的端口4000映射到容器暴露的端口80:

docker run -p 4000:80 friendlyhello

您也可以在shell中使用curl命令来查看相同的内容。

$ curl http://localhost:4000

Hello World!

Hostname: 8fc990912a14
Visits: cannot connect to Redis, counter disabled

按crtl+c结束应用

现在让我们在后台运行应用程序:

docker run -d -p 4000:80 friendlyhello

查看所有的container信息

$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED
1fa4ab2cf395 friendlyhello "python app.py" 28 seconds ago

现在使用docker container stop来结束进程,使用CONTAINER ID,如下所示:

docker container stop 1fa4ab2cf395

4、发布镜像

4.1、我使用的是阿里云的docker registry,感觉应该会比较快。首先你要有一个阿里云的账号。然后登陆进去新建一个仓库,设置命名空间等信息。

4.2 登陆阿里云的docker registry,后续操作都需要登陆才可以执行。

sudo docker login --username=admin registry.cn-hangzhou.aliyuncs.com

4.3 为镜像打标,tag为可选的,如果没有,默认为latest

格式:

docker tag image_name registry_url/namespace/repository_name:[tag]

例如

docker tag friendlyhello registry.cn-hangzhou.aliyuncs.com/shuzhou/demo1:latest

查看本地的镜像列表

docker image ls

4.4 发布镜像

docker push registry.cn-hangzhou.aliyuncs.com/shuzhou/demo1:latest

4.5 现在你可以在任何一台机器上执行下面的命令,运行镜像

docker run -p 4000:80 registry.cn-hangzhou.aliyuncs.com/shuzhou/demo1:latest

4.6 拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/shuzhou/demo1:latest

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

镜像 运行 文件 应用 内容 端口 应用程序 程序 命令 机器 容器 环境 阿里 登陆 仓库 信息 名称 就是 层级 目录 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 瑰夏咖啡 互联网佳科技有限公司 科技平台互联网 重庆互联网络科技 互联网科技缩写 科技互联网的估值 互联网金融中的现代科技 健康食品互联网创新科技园项目 东莞新华互联网科技学校 深圳市罗太互联网科技有限公司 用友工业互联网科技发展 明优互联网科技有限公司 特约风豹互联网科技为什么扣费 保险科技服务互联网营销体系 互联网科技公司营业执照怎么办理 互联网科技圈年度人物 上海京穆互联网科技有限公司 本届互联网大会上的黑科技 互联网科技手抄报图片 互联网科技博主张洲 嘟嘟瓜互联网科技 上海电发互联网科技有限公司 贵州叶脉互联网科技有限公司所属行业 群盈汇互联网科技有限公司 21世纪互联网科技成就 神州科技互联网有限公司 国产互联网科技公司 互联网科技企业商标注意事项 云南互联网科技学费 互联网科技创业有什么好项目
0