百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> 第一次构建、运转、发表、获取docker镜像的步骤详解
分享文章到:

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

发布时间:05/13 来源:未知 浏览: 关键词:

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 image
FROM python:2.7-slim
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
ADD . /app
# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches
CMD ["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 Flask
from redis import Redis, RedisError
import os
import socket
# Connect to Redis
redis = 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 = "<i>cannot 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 friendlyhello

3 、运转镜像

运转利用程序,运用-p将机器的端口4000映射到容器袒露的端口80:

docker run -p 4000:80 friendlyhello

您也可以在shell中运用curl下令来查看雷同的内容。

$ curl http://localhost:4000
<h3>Hello World!</h3><b>Hostname:</b> 8fc990912a14<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>

按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

总结

以上就是这篇文章的全部内容了,但愿本文的内容对大家的学习或者工作拥有一定的参考学习价值,感谢大家对脚本之家的支撑。要是你想理解更多相干内容请查看下面相干链接

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有155人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板