激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - 服務器知識 - 第一次構建、運行、發布、獲取docker鏡像的步驟詳解

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

2021-03-19 18:02shuzhou12 服務器知識

今天小編就為大家分享一篇關于第一次構建、運行、發布、獲取docker鏡像的步驟詳解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

1、前言

過去,如果您要開始編寫python應用程序,第一步就是把python的運行環境安裝到您的機器上,而且安裝的環境還要和線上的一致,比較麻煩。

使用docker,您可以從docker的官方registry或者其他倉庫,獲取一個可移植的python運行環境鏡像,無需安裝。然后,你可以基于這個鏡像開發你的應用程序,這樣可以確保您的應用程序,依賴項和運行時都一起運行。

2、構建一個python鏡像

2.1、為了構建您自己的鏡像,首先需要創建一個名稱為dockerfile的文件,用于定義創建鏡像并運行container所需的步驟。 dockerfile中的每條指令都會在鏡像中創建一個層級。當您更改dockerfile并重新build鏡像時,只重建那些更改的層級。與其他虛擬化技術相比,這是使鏡像輕量,小巧,快速的一個原因。

創建一個空目錄,創建一個名為dockerfile的文件,將以下內容復制并粘貼到該文件中并保存。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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標記它,以使鏡像有一個友好的名稱。

?
1
docker build -t friendlyhello

3 、運行鏡像

運行應用程序,使用-p將機器的端口4000映射到容器暴露的端口80:

?
1
docker run -p 4000:80 friendlyhello

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

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

?
1
2
$ 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結束應用

現在讓我們在后臺運行應用程序:

?
1
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,如下所示:

?
1
docker container stop 1fa4ab2cf395

4、發布鏡像

4.1、我使用的是阿里云的docker registry,感覺應該會比較快。首先你要有一個阿里云的賬號。然后登陸進去新建一個倉庫,設置命名空間等信息。

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

4.2 登陸阿里云的docker registry,后續操作都需要登陸才可以執行。

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

4.3 為鏡像打標,tag為可選的,如果沒有,默認為latest

格式:

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

例如

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

查看本地的鏡像列表

?
1
docker image ls

4.4 發布鏡像

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

4.5 現在你可以在任何一臺機器上執行下面的命令,運行鏡像

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

4.6 拉取鏡像

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

總結

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

原文鏈接:https://blog.csdn.net/qq_34680763/article/details/79711567

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 亚洲白嫩在线观看 | 成人免费毛片在线观看 | 插插操| 免费日韩片 | 国产91小视频在线观看 | 天天操天天碰 | 精品久久久久久成人av | 亚洲第五色综合网 | 精品一区二区三区免费 | 日韩每日更新 | 成人mm视频在线观看 | 日本不卡中文字幕 | 久久国产28 | 毛片a级毛片免费播放100 | 成人做爰高潮片免费视频美国 | 草草视频免费 | 国产88久久久国产精品免费二区 | 久久噜噜噜精品国产亚洲综合 | 98色视频 | 国产麻豆交换夫妇 | 国产色视频在线观看免费 | 国产一区二区高清在线 | 亚洲性在线视频 | 国产亚色| xvideos korean | 黄色视频a级毛片 | 毛片视频免费观看 | 欧美黄色性生活视频 | 黑人一区二区 | 亚洲一区二区三区在线免费观看 | 国产 日韩 亚洲 欧美 | 久草在线视频免费播放 | 国产一区二区三区高清 | 俄罗斯论理片 | va免费视频| 国产日韩线路一线路二 | 动漫孕妇被羞羞视频 | 亚洲小视频网站 | 91久久久久久久一区二区 | 久久久久久久久久美女 | 欧美一级高潮片免费的 |