亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

Docker簡單安裝與應用入門教程

2024-09-01 13:55:11
字體:
來源:轉載
供稿:網友

本文實例講述了Docker簡單安裝與應用。分享給大家供大家參考,具體如下:

作為一個初次接觸Docker的人來說,最大的問題是Docker是什么?Docker是一個開源的引擎,可以輕松的為任何應用創建一個輕量級的、可移植的、自給自足的容器。比如,我們在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,可以用于自動化測試和持續集成、發布。

Docker,安裝

還可以用于web應用的自動化打包和發布;在服務型環境中部署和調整數據庫或其他的后臺應用;從頭編譯或者擴展現有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環境。

在Mac下安裝Docker

打開Docker下載網址下載穩定版本,并安裝和運行Docker。頂部狀態欄中的鯨魚指示Docker正在運行,并可以從終端訪問。

Docker,安裝

點擊頂部狀態欄中的鯨魚,選擇About Docker以驗證是否有最新版本。

Docker,安裝

運行這些命令來測試docker、docker-ompose、docker-machine版本是否是最新的,并且和Docker.app兼容。

$ docker --version$ docker-compose --version$ docker-machine --version

打開一個命令行終端,你可以運行一些Docker命令來驗證Docker是否正常工作。比如使用docker version來檢查你是否安裝了最新版本,使用docker ps來列出正在運行的容器,使用docker run hello-world運行示例程序。

使用docker run命令可以啟動一個新容器,這種單一的命令將觸發安裝運行序列:先在本機尋找該鏡像,如果本機找不到就去Docker Hub下載這個鏡像,并把鏡像加載到容器中,然后啟動該程序,這樣容器就運行起來了。其他系統可以參考官網文檔安裝。

Docker示例項目

現在開始使用Docker構建應用程序,從Docker應用程序的層次結構底部開始,應用程序是一個容器,在這個層次上面是一個服務,它定義了容器在運行時的行為方式,最后,在頂層是堆棧,定義了所有服務的交互。

在過去,如果要開始編寫一個Python應用程序,第一步就是在機器上安裝一個Python運行庫,但是,這會造成應用程序只能在您的機器運行。使用Docker可以將一個可移植的Python運行時環境作為一個鏡像來獲取,無需安裝。然后構建可以將基礎Python鏡像與應用程序代碼一起包括在內,確保您的應用程序、依賴項和運行時環境都一起移動。

這些可移植的鏡像是由一個叫做Dockerfile的東西來定義的。

用Dockerfile定義容器

Dockerfile將定義容器內的環境中發生了什么,訪問像網絡接口和磁盤驅動器這樣的資源是在這個環境中虛擬化的,這個環境與系統的其他部分是隔離的,所以必須將端口映射到外部世界,并具體說明想復制哪些文件到那個環境。完成這些工作后,這個Dockerfile中定義的應用程序在任何地方運行都將有完全相同的表現。

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

# 使用官方的Python運行時環境作為父鏡像FROM python:2.7-slim# 將工作目錄設置為“/app”WORKDIR /app# 將當前目錄內容復制到“/app”的容器中ADD . /app# 安裝requirements.txt中指定的所有需要的軟件包RUN pip install --trusted-host pypi.python.org -r requirements.txt# 將端口80映射到外部世界EXPOSE 80# 定義環境變量ENV NAME World# 容器啟動時運行app.pyCMD ["python", "app.py"]

創建并編輯應用程序

創建requirements.txt文件,并放在與Dockerfile相同的目錄下。

FlaskRedis

創建app.py文件,并放在與Dockerfile相同的目錄下。

from flask import Flaskfrom redis import Redis, RedisErrorimport osimport socket# 連接到Redisredis = 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)

很簡單的就完成了應用程序部分,當Dockerfile被內置到鏡像中時,由于DockerfileADD命令,app.pyrequirements.txt將會出現,并且app.py的輸出將可以通過HTTP訪問,這要歸功于EXPOSE命令。

構建應用程序

打開一個命令行終端,確保仍然在新目錄的頂層,運行構建命令,這會創建一個Docker鏡像。

$ docker build -t friendlyhello .

構建的鏡像可以在本地Docker鏡像注冊表中看到。

$ docker images

運行應用程序

運行應用程序,使用-p將機器的端口4000映射到容器的已發布端口80。

$ docker run -p 4000:80 friendlyhello

現在應該看到一條消息,Python在http://0.0.0.0:80上提供應用程序,但是這個消息來自容器內部,它并不知道該容器的端口80映射到4000,因此正確的URL為http://localhost:4000。

Docker,安裝

也可以在命令行終端中使用curl命令來查看相同的內容。

$ curl http://localhost:4000

這個4000:80的端口重映射是為了演示Dockerfile中的EXPOSE與使用docker run -p發布的內容之間的區別。在后面的步驟中,會將主機上的端口80映射到容器中的端口80,并使用http://localhost

在Mac下,在命令行終端中點擊CTRL + C即可退出。而在Windows系統下,CTRL + C不會停止容器。因此,首先鍵入CTRL + C來獲取提示,或打開另一個Shell,然后鍵入docker container ls列出正在運行的容器,接著是docker container stop <Container NAME或ID>以停止容器。否則,當嘗試在下一步中重新運行容器時,將從守護程序中收到錯誤響應。

現在以分離模式在后臺運行應用程序。

$ docker run -d -p 4000:80 friendlyhello

容器正在后臺運行,您還可以使用docker container ls查看CONTAINER ID。

$ docker container ls

可以看到CONTAINER IDhttp://localhost:4000上的內容匹配?,F在使用docker container stop來結束進程。

$ docker container stop 9dfc794cdc52

分享鏡像

為了演示鏡像的可移植性,上傳我們構建的鏡像,并在其他地方運行它,畢竟,將容器部署到生產環境中時,需要學習如何使用注冊表。

一個注冊表是一個存儲庫的集合,一個存儲庫是一個鏡像集合,有點像GitHub存儲庫,除了代碼已經建立。注冊表上的帳戶可以創建許多存儲庫。Docker CLI默認使用Docker的公共注冊表。在這里使用Docker的公共注冊表,是因為它免費,并且是預配置的,但是有許多公共選項可供選擇,甚至可以使用Docker Trusted Registry設置您自己的私有注冊表。

使用Docker ID登錄

如果沒有Docker帳戶,請在Docker官網注冊一個。然后,登錄到本地機器上的Docker公共注冊表。

$ docker login

標記鏡像

將本地鏡像與注冊表中的存儲庫相關聯的符號是username/repository:tag,該tag是可選的,但推薦使用,因為這是注冊管理機構為Docker鏡像提供版本的機制。給存儲庫標記一個有意義的名字,比如get-started:part2,這會將鏡像放入啟動存儲庫,并將其標記為part2。

現在,把它們放在一起來標記鏡像,使用用戶名、存儲庫、標簽名稱運行docker tag image,以便鏡像將上傳到想要的目的地。

# 語法$ docker tag image username/repository:tag# 示例$ docker tag friendlyhello john/get-started:part2

運行docker imagesdocker image ls以查看新標記的鏡像。

發布鏡像

將您標記的鏡像上傳到存儲庫。

# 語法$ docker push username/repository:tag# 示例$ docker push john/get-started:part2

一旦完成,這個上傳的結果是公開的,如果你登錄到Docker Hub ,你將會看到那個新的鏡像和它的pull命令。

從遠程存儲庫中提取并運行鏡像

從現在開始,可以使用docker run并使用此命令在任何機器上運行您的應用程序。

# 語法$ docker run -p 4000:80 username/repository:tag# 示例$ docker run -p 4000:80 john/get-started:part2

如果鏡像在機器上本地不可用,Docker將從存儲庫中取出。無論docker run在哪里,它都會將您的鏡像、Python以及所有依賴項從requirements.txt中提取出來,并運行您的代碼。它們被打包在行李箱中一起旅行,主機不需要安裝任何東西,除了Docker環境來運行它。

希望本文所述對大家docker容器的使用有所幫助。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品尤物福利片在线观看| 国产精品中文字幕在线| 国产精品久久久久久中文字| 国产精品九九久久久久久久| 欧美成人精品三级在线观看| 亚洲国语精品自产拍在线观看| 亚洲欧美另类人妖| 久热精品视频在线免费观看| 久久久噜噜噜久久中文字免| 日韩欧美精品网站| 亚洲精品成a人在线观看| 亚洲精品欧美日韩| 色噜噜狠狠狠综合曰曰曰| 午夜精品福利在线观看| 日韩欧美精品中文字幕| 国产精品久久网| 欧美精品久久久久久久久| 日韩国产高清污视频在线观看| 亚洲午夜性刺激影院| 国产欧美va欧美va香蕉在线| 午夜精品理论片| 午夜精品久久久久久久白皮肤| 国产精品丝袜久久久久久不卡| 日韩精品极品在线观看播放免费视频| 日韩av在线电影网| 国产视频欧美视频| 日韩精品在线视频美女| 欧美在线视频网站| 成人在线视频福利| 黄色成人在线免费| 精品久久久久久久久国产字幕| 国产欧美日韩精品丝袜高跟鞋| 亚洲女人被黑人巨大进入| 日韩欧美黄色动漫| 蜜臀久久99精品久久久无需会员| 国产精品美女www爽爽爽视频| 国产精品永久免费观看| 国产精品99久久久久久白浆小说| 97久久久久久| 国产精品一区av| 2021国产精品视频| 97在线观看免费| 国产精品欧美亚洲777777| 国产91久久婷婷一区二区| 国产91ⅴ在线精品免费观看| 亚洲精品乱码久久久久久金桔影视| 在线不卡国产精品| 国产精品7m视频| 国产精品吹潮在线观看| 国产欧亚日韩视频| 亚洲第一精品福利| 久久九九亚洲综合| 欧美黑人xxxⅹ高潮交| 国产成人短视频| 国产一区二区黄| 久久久久久久久久婷婷| 亚洲日本成人女熟在线观看| 亚洲人成网7777777国产| 亚洲成人久久电影| 亚洲最大的成人网| 国产精品久久久久影院日本| 国产99久久久欧美黑人| 久久久久久国产三级电影| 国产精品日韩电影| 欧美成人免费在线观看| 亚洲男人天堂久| 欧美性色19p| 3344国产精品免费看| 欧美成年人视频网站欧美| 成人在线中文字幕| 亚洲欧洲午夜一线一品| 国产视频欧美视频| 538国产精品一区二区免费视频| 亚洲xxxx妇黄裸体| 成人淫片在线看| 久久久欧美一区二区| 久久国产精彩视频| 最好看的2019年中文视频| 国产精品国产三级国产aⅴ9色| 欧美日韩亚洲精品一区二区三区| 国产亚洲精品成人av久久ww| 亚洲女性裸体视频| 日韩中文字幕网址| 韩曰欧美视频免费观看| 97精品视频在线观看| 精品国产乱码久久久久久婷婷| 欧美精品福利视频| 久久成人精品电影| 精品亚洲一区二区三区| 性欧美视频videos6一9| 国产一区二区三区四区福利| 亚洲色图欧美制服丝袜另类第一页| 中文国产亚洲喷潮| 成人黄色av播放免费| 日韩欧美高清在线视频| 欧美多人爱爱视频网站| 国产精品美腿一区在线看| 久久精品国产一区| 有码中文亚洲精品| 日韩性生活视频| 韩国一区二区电影| 中文字幕av一区二区| 亚州av一区二区| 色妞久久福利网| 欧美亚洲成人免费| 日韩av在线播放资源| 91亚洲精品在线| 91免费观看网站| 亚洲综合精品伊人久久| 亚洲综合在线做性| 色婷婷av一区二区三区在线观看| 精品视频久久久久久久| 日韩在线观看免费全集电视剧网站| 国产精品一久久香蕉国产线看观看| 国产日韩欧美黄色| 精品亚洲一区二区三区在线观看| 狠狠躁夜夜躁久久躁别揉| 久久久99久久精品女同性| 久久国产精品久久久久久| 日韩电影大片中文字幕| 亚洲久久久久久久久久| 国产美女精品免费电影| 国产精品无码专区在线观看| 国产女人精品视频| 亚洲全黄一级网站| 高清一区二区三区四区五区| 欧美日韩国产色| 国产精品久久久久久久久久久不卡| 久久影视电视剧免费网站| 亚洲国产精久久久久久久| 91国内免费在线视频| 中文字幕亚洲一区二区三区五十路| 日韩h在线观看| 欧美在线亚洲在线| 亚洲电影免费观看高清完整版| 国产女人精品视频| 高清一区二区三区日本久| 欧美电影免费观看网站| 国产成人+综合亚洲+天堂| 国产一区私人高清影院| 日本不卡视频在线播放| 欧美日韩亚洲精品内裤| 欧美日本高清视频| 色与欲影视天天看综合网| 亚洲网在线观看| 亚州精品天堂中文字幕| 日韩成人在线视频网站| 亚洲美女性生活视频| 亚洲精品xxxx| 亚洲欧洲一区二区三区久久| 亚洲国产第一页| 久久久久久久一区二区三区| 日韩不卡中文字幕| 欧美日韩亚洲国产一区| 欧美性videos高清精品| 亚洲va码欧洲m码| 精品视频—区二区三区免费| 91av在线免费观看视频| 国产精品久久精品| 国产v综合v亚洲欧美久久| 性色av一区二区三区红粉影视| 亚洲的天堂在线中文字幕| 日韩精品免费一线在线观看| 91视频国产一区|