自己制作docker镜像,制作docker镜像方法
1.简介以前如果你想开始写Python应用,第一步是在你的机器上安装Python运行环境,而且安装环境还得和网上的一致,比较麻烦。
使用docker,您可以从Docker的官方注册表或其他存储库中获得可移植的Python运行时映像,而无需安装它。然后,您可以基于此映像开发您的应用程序,这可以确保您的应用程序、依赖项和运行时一起运行。
2.构建python映像2.1。为了构建自己的映像,首先需要创建一个名为Dockerfile的文件,该文件用于定义创建映像和运行容器所需的步骤。Dockerfile中的每条指令都在镜像中创建一个层次结构。当您更改Dockerfile并构建映像时,只会重新构建那些已更改的级别。与其他虚拟化技术相比,这是镜像轻量级、紧凑且快速的原因之一。
创建一个空目录,创建一个名为Dockerfile的文件,将以下内容复制并粘贴到该文件中,然后保存。
#使用官方Python运行时作为父映像来自python:2.7-slim#将工作目录设置为/appWORKDIR /app#将当前目录内容复制到位于/appADD的容器中。/app#安装requirements.txt run pip Install-trusted-host pypi.python.org-r requirements . txt #使端口80对该容器之外的世界可用EXPOSE 80#定义环境变量ENV NAME World# Run.py当容器在Dockerfile文件所在的目录中启动cmd [python , app.py] 2.2时,创建requirements . txt和app.py文件。由于Dockerfile文件的ADD命令,以上两个文件将被添加到最终的图像中;由于EXPOSE命令,您只能通过访问容器的端口80来访问app.py的内容。注意:这里的端口80是指容器暴露的端口,不是实际机器的端口。
requirements.txt
FlaskRedis应用程序. py
from Flask import Flask from Redis import Redis,Redis error import OSI import socket # Connect to Redis=Redis(host= Redis ,db=0,socket_connect_timeout=2,socket _ time out=2)app=Flask(_ _ name _ _)@ app . route(/)def hello():try:visits=Redis . incr( counter )except Redis error:visits= I can not Connect to Redis,counter disabled/I html= H3 hello { name }!/H3 b hostname:/b { hostname } br/ b visits:/b { 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 friendlyhello3运行映像
运行应用程序并使用-p将机器的端口4000映射到容器公开的端口80:
docker run-p 4000:80 friendly hello
您也可以在shell中使用curl命令来查看相同的内容。
$ curl http://localhost:4000 H3 hello World!/h3b主机名:/b 8fc 990912 a 14 br/b访问:/b I无法连接到Redis,计数器被禁用/i
单击crtl c结束应用程序。
现在让我们在后台运行应用程序:
docker run-d-p 4000:80 friendly hello
检查所有集装箱信息。
28秒前创建了docker container ls container ID IMAGE命令1 fa 4a B2 cf 395 friendly hello python app . py
现在使用docker容器停止来结束这个过程,使用容器ID,如下所示:
Er容器停止1fa4b2cf3954,发布图像
4.1.我用的是阿里云的docker registry,感觉应该更快。首先你得有一个阿里云的账号。然后登录,新建一个仓库,设置命名空间等信息。
4.2登录阿里云的docker注册表,后续操作需要登录后才能执行。
sudo docker登录-用户名=管理员registry.cn-hangzhou.aliyuncs.com
4.3对于镜像标记,标记是可选的,如果不是,默认为最新
格式:
Docker标签image _ name registry _ URL/namespace/repository _ name:[标签]例如
坞站标签你好登记处。氰根杭州。阿里尤克斯。com/周树/演示1:最新查看本地的镜像列表
ls4.4图像坞站发布镜像
码头推动器。氰根杭州。阿里尤克斯。com/周树/演示1:最新
4.5版现在你可以在任何一台机器上执行下面的命令,运行镜像
码头运行-p 4000:80注册表。氰根杭州。阿里尤克斯。com/周树/演示1:最新
4.6拉取镜像
码头牵引登记处。氰根杭州。阿里尤克斯。com/周树/演示1:最新