91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 服務器 > 
  • 第一次構建、運行、發布、獲取docker鏡像的步驟詳解

第一次構建、運行、發布、獲取docker鏡像的步驟詳解

發布時間:2020-09-05 23:18:31 來源:腳本之家 閱讀:297 作者:shuzhou12 欄目:服務器

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 = "<h4>Hello {name}!</h4>" \
      "<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

第一次構建、運行、發布、獲取docker鏡像的步驟詳解

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

$ curl http://localhost:4000
<h4>Hello World!</h4><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,感覺應該會比較快。首先你要有一個阿里云的賬號。然后登陸進去新建一個倉庫,設置命名空間等信息。

第一次構建、運行、發布、獲取docker鏡像的步驟詳解

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辽源市| 连城县| 罗江县| 封开县| 奇台县| 西贡区| 隆子县| 合川市| 永安市| 平顺县| 庆阳市| 东平县| 金秀| 新野县| 句容市| 台湾省| 江门市| 黔西| 淄博市| 蒲城县| 朝阳县| 唐河县| 水富县| 庄河市| 南通市| 永修县| 溆浦县| 广州市| 洞口县| 德化县| 晋中市| 会宁县| 任丘市| 同心县| 筠连县| 邹城市| 阿鲁科尔沁旗| 葫芦岛市| 晴隆县| 崇文区| 平武县|