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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【Docker】命令使用大全

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

【Docker】命令使用大全

目標(biāo):

編寫自己的 Dockerfile 鏡像

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

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

有關(guān) Dockerfile 的相關(guān)知識(shí),我在后面的文章會(huì)進(jìn)行講解,今天主要是實(shí)際操作

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

創(chuàng)建一個(gè) Flask APP

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

app.py

fromflaskimportFlask,render_template importrandom app=Flask(__name__) #listoffoximages,用來進(jìn)行頁面展示的 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)建一個(gè)requestment.txt文件,把 Python 需要的包及其版本放進(jìn)去,方便后續(xù)安裝

requestment.txt

Flask==0.10.1

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

templates/index.html

創(chuàng)建一個(gè) 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 構(gòu)建一個(gè)鏡像Alpine:Alpine Linux 的最小 Docker 映像,具有完整的包索引,大小只有 5mb,非常實(shí)用。

對命令的含義進(jìn)行了注釋

#基礎(chǔ)鏡像 FROMalpine:3.9 #因?yàn)槲覀冃枰\(yùn)行 Python,所以需要配置環(huán)境:安裝 Python 和 pip 到Apline Linux 中,該命令不僅會(huì)安裝 pip 包,也會(huì)安裝其他的依賴(如 Python 的解釋器) #RUN是Docker的命令,apkadd--updatepy2-pip類似于Linux命令 RUNapkadd--updatepy2-pip #拷貝本地文件requirements.txt(默認(rèn)與Dockerfile同一文件夾)到容器的/usr/src/app/文件夾下,會(huì)自動(dòng)創(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/ #容器需要暴露端口,F(xiàn)lask程序運(yùn)行的端口 EXPOSE5000 #運(yùn)行python程序,該命令的意思是python/usr/src/app/app.py CMD["python","/usr/src/app/app.py"]

目錄結(jié)構(gòu)如下所示:

編譯鏡像

編寫完 Dockerfile,接下來就是進(jìn)行編譯了,使用 docker bulid

是 Docker hub 的用戶名命令最后有個(gè) . 不要漏了,其代表的含義是 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

編譯完成后,我們可以看到鏡像出現(xiàn)了

運(yùn)行鏡像為容器

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

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

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

推送到遠(yuǎn)程倉庫

要推送到遠(yuǎn)程倉庫,首先需要登錄你自己的 Docker hub 賬號(hào)

dockerlogin dokckerpushYOUR_USERNAME/myfirstapp

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

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

    關(guān)注

    12

    文章

    9253

    瀏覽量

    85749
  • 鏡像
    +關(guān)注

    關(guān)注

    0

    文章

    169

    瀏覽量

    10773
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    489

    瀏覽量

    11888

原文標(biāo)題:【Docker】項(xiàng)目實(shí)戰(zhàn),部署自己的APP

文章出處:【微信號(hào):Unfinished_coder,微信公眾號(hào):機(jī)器視覺CV】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    云服務(wù)器 Flexus X 實(shí)例,Docker 集成搭建 NGINX

    Docker 集成搭建 NGINX 1、購買華為云 Flexus X 實(shí)例 Flexus云服務(wù)器X實(shí)例-華為云 (huaweicloud.com) ? 2、docker 安裝 yum?install
    的頭像 發(fā)表于 01-13 11:09 ?62次閱讀
    云服務(wù)器 Flexus X 實(shí)例,<b class='flag-5'>Docker</b> 集成搭建 NGINX

    docker的基本命令和使用示例

    DotCloud 公司是一家 PAAS 服務(wù)提供商,從 docker 的出身也可以看出它的主要功能和方向。
    的頭像 發(fā)表于 01-06 15:59 ?92次閱讀

    在華為云 FlexusX 實(shí)例上實(shí)現(xiàn) Docker 容器的實(shí)時(shí)監(jiān)控與可視化分析

    : 華為云Flexus云服務(wù)器X實(shí)例 ? 原生命令 查看正在運(yùn)行的容器 [root@flexusx-251f?~]# docker psCONTAINER?
    的頭像 發(fā)表于 01-02 13:42 ?88次閱讀
    在華為云 FlexusX 實(shí)例上實(shí)現(xiàn) <b class='flag-5'>Docker</b> 容器的實(shí)時(shí)監(jiān)控與可視化分析

    docker-compose配置文件內(nèi)容詳解以及常用命令介紹

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

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

    作者:京東科技 林中 Docker是一個(gè)開放的平臺(tái),用于開發(fā)、發(fā)布和運(yùn)行應(yīng)用程序。Docker分離了應(yīng)用程序和運(yùn)行應(yīng)用的基礎(chǔ)設(shè)施,從而實(shí)現(xiàn)了軟件的快速交付。利用docker提供的一系列功能,包括構(gòu)建
    的頭像 發(fā)表于 10-29 11:28 ?241次閱讀

    Linux實(shí)用命令大全

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

    手動(dòng)構(gòu)建Docker鏡像的方法

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

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

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

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

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

    Jtti:Docker會(huì)替代調(diào)虛機(jī)嗎

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

    關(guān)于Docker 的清理命令集錦

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

    精通Docker網(wǎng)絡(luò):Bridge驅(qū)動(dòng)深度解析

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

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

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

    【鴻蒙】OpenHarmony運(yùn)行docker詳細(xì)步驟

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