RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【Docker】命令使用大全

gVTR_Unf ? 來源:機器視覺CV ? 2020-09-07 16:40 ? 次閱讀

【Docker】命令使用大全

目標:

編寫自己的 Dockerfile 鏡像

創(chuàng)建一個簡單的 Web 界面

使用鏡像創(chuàng)建一個 Flask APP

有關 Dockerfile 的相關知識,我在后面的文章會進行講解,今天主要是實際操作

所需工具:安裝好 Docker 的服務器或者本地電腦,筆者使用的是服務器:Ubuntu 系統(tǒng)

創(chuàng)建一個 Flask APP

首先創(chuàng)建一個 Flask app

app.py

fromflaskimportFlask,render_template importrandom app=Flask(__name__) #listoffoximages,用來進行頁面展示的 images=[ "https://media0.giphy.com/media/Ko5dZRMv9uJFu/giphy.gif", "https://media.tenor.com/images/6461359b4205a95bf1f4374a3aa2acec/tenor.gif", "https://i.imgur.com/dUBv79d.gif", "https://media2.giphy.com/media/dvBgr7pA6FTJOMOALY/giphy.gif", "https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/45dfcad0-23ff-4af4-8c3f-b4b68f6edab4/d5hxh3z-aac8f004-e5db-4030-8e0c-62b899b4d0ce.gif" ] @app.route('/') defindex(): url=random.choice(images) returnrender_template('index.html',url=url) if__name__=="__main__": app.run(host="0.0.0.0")

創(chuàng)建一個requestment.txt文件,把 Python 需要的包及其版本放進去,方便后續(xù)安裝

requestment.txt

Flask==0.10.1

創(chuàng)建一個簡單的 Web 頁面

templates/index.html

創(chuàng)建一個 templates 的文件夾,并在此文件夾下創(chuàng)建 index.html 文件

body{ background:black; color:white; } div.container{ max-width:500px; margin:100pxauto; border:20pxsolidwhite; padding:10px; text-align:center; } h4{ text-transform:uppercase; }

FoxGifoftheday

Courtesy:AICV

Dockerfile

我們基于 Alpine 構建一個鏡像Alpine:Alpine Linux 的最小 Docker 映像,具有完整的包索引,大小只有 5mb,非常實用。

對命令的含義進行了注釋

#基礎鏡像 FROMalpine:3.9 #因為我們需要運行 Python,所以需要配置環(huán)境:安裝 Python 和 pip 到Apline Linux 中,該命令不僅會安裝 pip 包,也會安裝其他的依賴(如 Python 的解釋器) #RUN是Docker的命令,apkadd--updatepy2-pip類似于Linux命令 RUNapkadd--updatepy2-pip #拷貝本地文件requirements.txt(默認與Dockerfile同一文件夾)到容器的/usr/src/app/文件夾下,會自動創(chuàng)建 COPYrequirements.txt/usr/src/app/ #安裝所需要的python包 RUNpipinstall--no-cache-dir-r/usr/src/app/requirements.txt #拷貝其他文件 COPYapp.py/usr/src/app/ COPYtemplates/index.html/usr/src/app/templates/ #容器需要暴露端口,Flask程序運行的端口 EXPOSE5000 #運行python程序,該命令的意思是python/usr/src/app/app.py CMD["python","/usr/src/app/app.py"]

目錄結構如下所示:

編譯鏡像

編寫完 Dockerfile,接下來就是進行編譯了,使用 docker bulid

是 Docker hub 的用戶名命令最后有個 . 不要漏了,其代表的含義是 Dockerfile 所在的路徑

dockerbuild-t/myapp.

下面是編譯過程中的一些輸出:

SendingbuildcontexttoDockerdaemon6.656kB Step1/8:FROMalpine:3.9 --->78a2ce922f86 Step2/8:RUNapkadd--updatepy2-pip --->Usingcache --->ba2fa67ca853 Step3/8:COPYrequirements.txt/usr/src/app/ --->Usingcache --->43511e5ced4b Step4/8:RUNpipinstall--no-cache-dir-r/usr/src/app/requirements.txt --->Runningin97289c7eda9d CollectingFlask==0.10.1(from-r/usr/src/app/requirements.txt(line1)) Downloadinghttps://files.pythonhosted.org/packages/db/9c/149ba60c47d107f85fe52564133348458f093dd5e6b57a5b60ab9ac517bb/Flask-0.10.1.tar.gz(544kB) CollectingWerkzeug>=0.7(fromFlask==0.10.1->-r/usr/src/app/requirements.txt(line1)) Downloadinghttps://files.pythonhosted.org/packages/cc/94/5f7079a0e00bd6863ef8f1da638721e9da21e5bacee597595b318f71d62e/Werkzeug-1.0.1-py2.py3-none-any.whl(298kB) CollectingJinja2>=2.4(fromFlask==0.10.1->-r/usr/src/app/requirements.txt(line1)) Downloadinghttps://files.pythonhosted.org/packages/30/9e/f663a2aa66a09d838042ae1a2c5659828bb9b41ea3a6efa20a20fd92b121/Jinja2-2.11.2-py2.py3-none-any.whl(125kB) Collectingitsdangerous>=0.21(fromFlask==0.10.1->-r/usr/src/app/requirements.txt(line1)) Downloadinghttps://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl CollectingMarkupSafe>=0.23(fromJinja2>=2.4->Flask==0.10.1->-r/usr/src/app/requirements.txt(line1)) Downloadinghttps://files.pythonhosted.org/packages/b9/2e/64db92e53b86efccfaea71321f597fa2e1b2bd3853d8ce658568f7a13094/MarkupSafe-1.1.1.tar.gz Installingcollectedpackages:Werkzeug,MarkupSafe,Jinja2,itsdangerous,Flask Runningsetup.pyinstallforMarkupSafe:started Runningsetup.pyinstallforMarkupSafe:finishedwithstatus'done' Runningsetup.pyinstallforFlask:started Runningsetup.pyinstallforFlask:finishedwithstatus'done' SuccessfullyinstalledFlask-0.10.1Jinja2-2.11.2MarkupSafe-1.1.1Werkzeug-1.0.1itsdangerous-1.1.0 Removingintermediatecontainer97289c7eda9d --->9dbc17abb6f7 Step5/8:COPYapp.py/usr/src/app/ --->0c69faca84cb Step6/8:COPYtemplates/index.html/usr/src/app/templates/ --->a0e7ce10250b Step7/8:EXPOSE5000 --->Runninginf570b863937d Removingintermediatecontainerf570b863937d --->ba48b6b1c4bd Step8/8:CMD["python","/usr/src/app/app.py"] --->Runningin2a73d498ea52 Removingintermediatecontainer2a73d498ea52 --->b64a5a0d5dd0 Successfullybuiltb64a5a0d5dd0 Successfullytaggedaicv/myfirstapp:latest

編譯完成后,我們可以看到鏡像出現了

運行鏡像為容器

我們使用創(chuàng)建的鏡像運行一個容器,將容器中的 5000端口映射到宿主機的 8899 端口

dockerrun-p-d8899:5000--namemyfirstappaicv/myfirstapp

打開 http://localhost:8899或者 http://ip:8899就能看到頁面了,刷新頁面可以看到不同的畫面。

推送到遠程倉庫

要推送到遠程倉庫,首先需要登錄你自己的 Docker hub 賬號

dockerlogin dokckerpushYOUR_USERNAME/myfirstapp

本節(jié)我們完成了一個簡單的 Flask APP 的部署工作,了解了 Dockerfile 的基本使用,并將鏡像推送到我們的遠程倉庫中。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9123

    瀏覽量

    85324
  • 鏡像
    +關注

    關注

    0

    文章

    164

    瀏覽量

    10707
  • Docker
    +關注

    關注

    0

    文章

    457

    瀏覽量

    11846

原文標題:【Docker】項目實戰(zhàn),部署自己的APP

文章出處:【微信號:Unfinished_coder,微信公眾號:機器視覺CV】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    docker-compose配置文件內容詳解以及常用命令介紹

    。 使用 docker-compose.yml 定義構成應用程序的服務,這樣它們可以在隔離環(huán)境中一起運行。 最后,執(zhí)行 docker-compose up 命令來啟動并運行整個應用程序。 二、
    的頭像 發(fā)表于 12-02 09:29 ?229次閱讀
    <b class='flag-5'>docker</b>-compose配置文件內容詳解以及常用<b class='flag-5'>命令</b>介紹

    如何在樹莓派上安裝Docker容器

    ,確保你的系統(tǒng)是最新的。打開終端,輸入以下命令: sudo apt updatesudo apt upgrade 3. 安裝Docker 步驟1:添加Docker的官方GPG密鑰 curl -fsSL https://downl
    的頭像 發(fā)表于 11-11 11:38 ?493次閱讀

    Docker運行環(huán)境安裝

    作者:京東科技 林中 Docker是一個開放的平臺,用于開發(fā)、發(fā)布和運行應用程序。Docker分離了應用程序和運行應用的基礎設施,從而實現了軟件的快速交付。利用docker提供的一系列功能,包括構建
    的頭像 發(fā)表于 10-29 11:28 ?201次閱讀

    Linux實用命令大全

    Linux實用命令大全
    的頭像 發(fā)表于 10-23 13:50 ?221次閱讀
    Linux實用<b class='flag-5'>命令</b><b class='flag-5'>大全</b>

    手動構建Docker鏡像的方法

    不推薦使用docker commit命令,而應該使用更靈活、更強大的dockerfile來構建docker鏡像。
    的頭像 發(fā)表于 08-05 15:30 ?515次閱讀
    手動構建<b class='flag-5'>Docker</b>鏡像的方法

    ARM平臺實現Docker容器技術

    下載鏡像并運行容器的方法。1 Docker安裝1.1 安裝方法(1)安裝依賴包 打開Ubuntu,確保Ubuntu可正常訪問互聯網,執(zhí)行如下命令安裝Docker依賴包。 Host#sudo
    發(fā)表于 07-25 14:36

    ARM平臺實現Docker容器技術

    的方法。1 Docker安裝1.1 安裝方法(1)安裝依賴包 打開Ubuntu,確保Ubuntu可正常訪問互聯網,執(zhí)行如下命令安裝Docker依賴包。 Host#sudo apt-get update
    發(fā)表于 07-17 11:05

    Jtti:Docker會替代調虛機嗎

    Docker是計算虛擬化的一種方式,和使用虛擬機進行虛擬化是類似的。由于近幾年Docker技術的流行和發(fā)展。所以單獨介紹一下Docker。首先先回答下面一個問題。 1.Docker會替
    的頭像 發(fā)表于 07-12 14:38 ?312次閱讀
    Jtti:<b class='flag-5'>Docker</b>會替代調虛機嗎

    關于Docker 的清理命令集錦

    這篇文章主要介紹了Docker 清理命令集錦,需要的朋友可以參考下 復制代碼代碼如下: docker kill $(docker ps -a -q) ?刪除所有已經停止的容器 復制代碼
    的頭像 發(fā)表于 06-13 15:56 ?371次閱讀

    一文掃盡Nas常用Docker軟件

    NAS(Network Attached Storage,網絡附加存儲)設備上的Docker軟件選擇取決于您的具體需求和用途。以下是一些NAS上常用的Docker軟件推薦
    的頭像 發(fā)表于 05-23 18:33 ?1818次閱讀

    精通Docker網絡:Bridge驅動深度解析

    除了使用 docker0 網橋外,用戶還可以使用自定義的網橋,然后通過 --bridge=BRIDGE 參數傳遞給 docker daemon。
    的頭像 發(fā)表于 03-31 15:58 ?1437次閱讀
    精通<b class='flag-5'>Docker</b>網絡:Bridge驅動深度解析

    ARM平臺實現Docker容器技術

    什么是Docker? (1)Docker的架構 Docker是一個開源的應用容器引擎,讓開發(fā)者可打包他們的應用以及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows機器上
    的頭像 發(fā)表于 03-07 13:48 ?793次閱讀
    ARM平臺實現<b class='flag-5'>Docker</b>容器技術

    【鴻蒙】OpenHarmony運行docker詳細步驟

    1.環(huán)境和設備 系統(tǒng)版本: 3.2release(64 位) OpenHarmony 內核版本:5.10 標準系統(tǒng)設備: DAYU200 Docker:18.03.1 (64 位) sd 卡一張
    的頭像 發(fā)表于 03-02 15:10 ?2606次閱讀
    【鴻蒙】OpenHarmony運行<b class='flag-5'>docker</b>詳細步驟

    迅為3588開發(fā)板Ubuntu安裝Docker

    迅為3588開發(fā)板Ubuntu安裝Docker
    的頭像 發(fā)表于 01-29 16:07 ?734次閱讀
    迅為3588開發(fā)板Ubuntu安裝<b class='flag-5'>Docker</b>

    RK3568-Docker容器部署方法說明

    RK3568-Docker容器部署方法說明
    的頭像 發(fā)表于 01-22 10:12 ?1369次閱讀
    RK3568-<b class='flag-5'>Docker</b>容器部署方法說明
    RM新时代网站-首页