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/ #容器需要暴露端口,F(xiàn)lask程序運行的端口 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

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

運行鏡像為容器

我們使用創(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 的基本使用,并將鏡像推送到我們的遠程倉庫中。

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

    關注

    12

    文章

    8701

    瀏覽量

    84562
  • 鏡像
    +關注

    關注

    0

    文章

    158

    瀏覽量

    10651
  • Docker
    +關注

    關注

    0

    文章

    446

    瀏覽量

    11738

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

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

收藏 人收藏

    評論

    相關推薦

    手動構建Docker鏡像的方法

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

    ARM平臺實現(xiàn)Docker容器技術

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

    ARM平臺實現(xiàn)Docker容器技術

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

    關于Docker 的清理命令集錦

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

    鐵威馬NAS使用docker方式運行Solopace.Gem客戶端

    xshell,CRT,putty等)連接到nas命令行,執(zhí)行以下命令: ? docker run -d --name=SolopaceGem -v /var/lib:/var/lib -v /dev/net
    的頭像 發(fā)表于 12-18 14:31 ?623次閱讀
    鐵威馬NAS使用<b class='flag-5'>docker</b>方式運行Solopace.Gem客戶端

    如何利用樹莓派安裝DockerDocker-compose呢?

    本文主要演示了樹莓派如何安裝DockerDocker-compose的過程。
    的頭像 發(fā)表于 12-14 16:19 ?2323次閱讀
    如何利用樹莓派安裝<b class='flag-5'>Docker</b>和<b class='flag-5'>Docker</b>-compose呢?

    docker內存不足的解決辦法

    審查Docker容器的內存使用情況: 首先,我們需要審查Docker容器的內存使用情況,以確定它是由哪個容器引起的內存不足問題。命令"docker stats"可以用來查看容器的資源使
    的頭像 發(fā)表于 11-23 10:41 ?2185次閱讀

    docker容器有幾種狀態(tài)

    Docker 容器的各種狀態(tài)及其含義。 Created(已創(chuàng)建):當我們使用 docker create 命令創(chuàng)建一個容器時,它會進入已創(chuàng)建狀態(tài)。在這個狀態(tài)下,容器的文件系統(tǒng)和網(wǎng)絡等資源都已被創(chuàng)建,但容器本身尚未啟動。它可以在
    的頭像 發(fā)表于 11-23 09:50 ?1785次閱讀

    docker核心組件有哪些

    Docker 是一種開源的容器化平臺,它能夠實現(xiàn)將應用程序及其依賴項打包到一個可移植的容器中,從而實現(xiàn)快速、可重復、可擴展的部署和管理。Docker 的核心組件包括 Docker Engine
    的頭像 發(fā)表于 11-23 09:47 ?1489次閱讀

    docker進入容器的方法有哪些

    Docker是一種流行的容器化平臺,它能夠快速構建、交付和運行應用程序。在使用Docker時,我們經(jīng)常需要進入容器進行調試、管理和運行命令等操作。本文將詳細介紹Docker進入容器的各
    的頭像 發(fā)表于 11-23 09:45 ?8963次閱讀

    如何啟動本機docker服務

    在本機上安裝Docker。Docker支持多個操作系統(tǒng),包括Linux、Windows和Mac OS等。根據(jù)你使用的操作系統(tǒng),選擇對應的安裝方式進行安裝。 對于Linux系統(tǒng),可以通過以下命令來安
    的頭像 發(fā)表于 11-23 09:43 ?1501次閱讀

    linux關閉docker命令

    在 Linux 系統(tǒng)中,關閉 Docker 的操作可以通過以下多種方式進行。本文將詳細講解每一種方式,并提供示例代碼和命令,以幫助讀者更好地理解和實踐。 使用 docker 命令 最常
    的頭像 發(fā)表于 11-23 09:39 ?2379次閱讀

    docker exec命令的使用方法

    Docker是一種開源的容器化平臺,可以讓開發(fā)人員在容器中打包和運行應用程序。它提供了一種快速、可靠和一致的方式來構建、部署和運行應用程序。Docker exec命令Docker提供
    的頭像 發(fā)表于 11-23 09:33 ?1334次閱讀

    mysql數(shù)據(jù)庫命令大全

    MySQL是一種關系型數(shù)據(jù)庫管理系統(tǒng),它擁有豐富的命令來管理和操作數(shù)據(jù)庫。以下是一份詳盡、詳實、細致的MySQL數(shù)據(jù)庫命令大全,希望對您有所幫助。 創(chuàng)建數(shù)據(jù)庫 使用CREATE DATABASE
    的頭像 發(fā)表于 11-16 16:39 ?1176次閱讀

    如何使用 Docker容器化技術

    對于開發(fā)人員來說,Docker肯定都不陌生,今天小編帶大家重新學習一下Docker。 什么是 Docker 官話: Docker 是一種開源的容器化平臺,它可以幫助開發(fā)者將應用程序與其
    的頭像 發(fā)表于 09-30 11:24 ?1.6w次閱讀