<强> 1,前言强>
过去,如果您要开始编写Python应用程序,第一步就是把Python的运行环境安装到您的机器上,而且安装的环境还要和线上的一致,比较麻烦。
使用码头工人,您可以从码头工人的官方注册表或者其他仓库,获取一个可移植的Python运行环境镜像,无需安装。然后,你可以基于这个镜像开发你的应用程序,这样可以确保您的应用程序,依赖项和运行时都一起运行。
<强> 2,构建一个python镜像强>
2.1,为了构建您自己的镜像,首先需要创建一个名称为Dockerfile的文件,用于定义创建镜像并运行容器所需的步骤。Dockerfile中的每条指令都会在镜像中创建一个层级。当您更改Dockerfile并重新构建镜像时,只重建那些更改的层级。与其他虚拟化技术相比,这是使镜像轻量,小巧,快速的一个原因。
创建一个空目录,创建一个名为Dockerfile的文件,将以下内容复制并粘贴到该文件中并保存。
#使用官方Python运行时作为一个家长的形象 从python 2.7苗条 #设置工作目录为/应用程序 WORKDIR/应用程序 #当前目录的内容复制到容器在/app 添加。/应用程序 #安装任何需要让中指定的包 运行pip安装——可信主机pypi.python.org - r让 #让外面的世界这个容器可用端口80 80年公开 #定义环境变量 ENV名字世界 # app.py当容器启动运行 CMD (“python”、“app.py”)
2.2在与Dockerfile文件同一个目录下,创建让和app.py文件。因为Dockerfile文件的加命,令上面的两个文件会被加到最终的镜像中,因为暴露命令,访问容器的80端口,才可以访问到应用程序。py的内容,注意:这里的80端口指的是容器暴露的端口,并不是实际机器的端口。
让
瓶
引用>
复述,<强> app.py 强>
从进口瓶瓶 从进口复述,复述,RedisError 进口操作系统 进口套接字 #连接复述, 复述=复述(主机=案词觥?德国联邦铁路(db)=0, socket_connect_timeout=2, socket_timeout=2) 应用=瓶(__name__) @app.route (“/? def hello (): 试一试: 访问=redis.incr(“计数器”) 除了RedisError: 访问=" & lt; i>不能连接到复述,计数器disabled” html=" & lt; h4>你好{名称}! & lt;/h4>”\ “& lt; b>主机名:& lt;/b>{主机名}& lt; br/祝辞;”\ “& lt; b>访问:& lt;/b>{访问}” 返回html.format (name=操作系统。采用“名称”、“世界”),主机名=socket.gethostname(),访问=访问) if __name__==癬_main__”: app.run(主机=0.0.0.0,端口=80)2.3把我们的应用打包为镜,像要在DockerFile目录下执行。这会创建一个码头工人镜像,我们将使用- t标记它,以使镜像有一个友好的名称。
码头工人建造- t friendlyhello<强> 3,运行镜像强>
运行应用程序,使用- p将机器的端口4000映射到容器暴露的端口80:
码头工人运行- p 4000:80 friendlyhello
您也可以在shell中使用curl命令来查看相同的内容。
curl http://localhost: 4000美元 & lt; h4> Hello World ! & lt;/h4> & lt; b>主机名:& lt;/b>8 fc990912a14
访问:& lt;/b>& lt; i>不能连接到复述,计数器disabled按crtl + c结束应用
现在让我们在后台运行应用程序:
码头工人运行- d - p 4000:80 friendlyhello查看所有的容器信息
美元集装箱码头工人ls
引用>
容器ID ,,,,,,IMAGE ,,,,,,,,,,,,,COMMAND ,,,,,,,,,,,创建
1 fa4ab2cf395 ,,,,,,friendlyhello ,,,,,“python app.py”,,,,28秒前现在使用集装箱码头工人停止来结束进程,使用容器ID,如下所示:
集装箱码头工人停止1 fa4ab2cf395<强> 4,发布镜像强>
4.1,我使用的是阿里云的码头工人注册表,感觉应该会比较快。首先你要有一个阿里云的账号。然后登陆进去新建一个仓库,设置命名空间等信息。
第一次构建、运行,发布,获取码头工人镜像的步骤详解