0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【Docker】命令使用大全

gVTR_Unf 来源:机器视觉CV 2020-09-07 16:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

【Docker】命令使用大全

目标:

编写自己的 Dockerfile 镜像

创建一个简单的 Web 界面

使用镜像创建一个 Flask APP

有关 Dockerfile 的相关知识,我在后面的文章会进行讲解,今天主要是实际操作

所需工具:安装好 Docker 的服务器或者本地电脑,笔者使用的是服务器:Ubuntu 系统

创建一个 Flask APP

首先创建一个 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")

创建一个requestment.txt文件,把 Python 需要的包及其版本放进去,方便后续安装

requestment.txt

Flask==0.10.1

创建一个简单的 Web 页面

templates/index.html

创建一个 templates 的文件夹,并在此文件夹下创建 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,所以需要配置环境:安装 Python 和 pip 到Apline Linux 中,该命令不仅会安装 pip 包,也会安装其他的依赖(如 Python 的解释器) #RUN是Docker的命令,apkadd--updatepy2-pip类似于Linux命令 RUNapkadd--updatepy2-pip #拷贝本地文件requirements.txt(默认与Dockerfile同一文件夹)到容器的/usr/src/app/文件夹下,会自动创建 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

编译完成后,我们可以看到镜像出现了

运行镜像为容器

我们使用创建的镜像运行一个容器,将容器中的 5000端口映射到宿主机的 8899 端口

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

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

推送到远程仓库

要推送到远程仓库,首先需要登录你自己的 Docker hub 账号

dockerlogin dokckerpushYOUR_USERNAME/myfirstapp

本节我们完成了一个简单的 Flask APP 的部署工作,了解了 Dockerfile 的基本使用,并将镜像推送到我们的远程仓库中。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    13

    文章

    10094

    浏览量

    90880
  • 镜像
    +关注

    关注

    0

    文章

    178

    浏览量

    11548
  • Docker
    +关注

    关注

    0

    文章

    526

    浏览量

    14017

原文标题:【Docker】项目实战,部署自己的APP

文章出处:【微信号:Unfinished_coder,微信公众号:机器视觉CV】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【HZ-T536开发板免费体验】Docker 环境安装及应用

    一、检查 Docker 安装状态 板子提示“command not found”或无版本信息,说明 Docker 未安装,如有需要请自行安装 二、Docker 环境安装 首先更新系统包索引并安装
    发表于 09-01 17:59

    docker无法启用怎么解决?

    mengxing@mengxing-virtual-machine:/etc/docker$ sudo systemctl daemon-reload
    发表于 06-23 07:17

    Docker Volume管理命令大全

    Docker Volume管理命令大全
    的头像 发表于 05-28 17:14 609次阅读

    如何使用Docker部署大模型

    随着深度学习和大模型的快速发展,如何高效地部署这些模型成为了一个重要的挑战。Docker 作为一种轻量级的容器化技术,能够将模型及其依赖环境打包成一个可移植的容器,极大地简化了部署流程。本文将详细介绍如何使用 Docker 部署大模型,并给出具体的步骤和示例。
    的头像 发表于 05-24 16:39 795次阅读

    Linux常用命令大全

    Linux常用命令是指在Linux操作系统中广泛使用的命令工具,这些命令工具可以完成各种不同的任务,如管理文件和目录、操作进程、网络通信、软件安装等。
    的头像 发表于 05-03 18:08 1612次阅读

    Docker Compose的常用命令

    大家好,今天给大家分享Docker Compose的常用命令,以及docker-compose文件的属性。Docker Compose 是一个用于定义和运行多容器
    的头像 发表于 04-30 13:40 927次阅读

    Docker基本命令及其用例

    Docker 已迅速成为容器化应用程序的事实标准。作为开发人员或 DevOps 工程师/系统管理员,熟悉 Docker 对于高效部署现代、可移植的应用程序至关重要。
    的头像 发表于 04-30 10:04 562次阅读

    Docker常用命令大全

    Docker 是一种开源的应用容器引擎,广泛应用于开发、部署和运行分布式应用。掌握 Docker 常用命令对于开发人员和运维人员来说非常重要。本文将为大家整理常用的Docker
    的头像 发表于 04-22 12:47 673次阅读

    【技术案例】Android in Docker

    Docker介绍Docker是一个开源的容器化平台,用于打包、分发和运行应用程序。它通过将应用及其所有依赖打包到独立的容器中,确保应用在不同环境中一致运行。Docker提供快速部署、隔离性强和高效
    的头像 发表于 04-02 16:33 1454次阅读
    【技术案例】Android in <b class='flag-5'>Docker</b>

    基于Docker镜像逆向生成Dockerfile

    在本文中, 我们将通过理解Docker镜像如何存储数据, 以及如何使用工具查看镜像方方面面的信息来逆向工程一个Docker镜像; 以及如何使用Python的Docker API来构建一个类似Dedockify的工具来创建Dock
    的头像 发表于 03-10 09:45 1217次阅读
    基于<b class='flag-5'>Docker</b>镜像逆向生成Dockerfile

    云服务器 Flexus X 实例,Docker 集成搭建 NGINX

    Docker 集成搭建 NGINX 1、购买华为云 Flexus X 实例 Flexus云服务器X实例-华为云 (huaweicloud.com)   2、docker 安装 yum install
    的头像 发表于 01-13 11:09 1229次阅读
    云服务器 Flexus X 实例,<b class='flag-5'>Docker</b> 集成搭建 NGINX

    docker的基本命令和使用示例

    DotCloud 公司是一家 PAAS 服务提供商,从 docker 的出身也可以看出它的主要功能和方向。
    的头像 发表于 01-06 15:59 776次阅读

    docker通过中间镜像加速部署

    使用 docker 打包镜像的时候, 每次耗费时间最多的就是 docker build 的过程. 特别是对于前端工程的打包, 有时候下载依赖包的时间就要 10 几分钟, 这就导致发布版本的效率极低.
    的头像 发表于 01-06 12:39 846次阅读

    在华为云 FlexusX 实例上实现 Docker 容器的实时监控与可视化分析

    : 华为云Flexus云服务器X实例   原生命令 查看正在运行的容器 [root@flexusx-251f ~]# docker psCONTAINER 
    的头像 发表于 01-02 13:42 782次阅读
    在华为云 FlexusX 实例上实现 <b class='flag-5'>Docker</b> 容器的实时监控与可视化分析

    在 Huawei Cloud EulerOS 系统中安装 Docker 的详细步骤与常见问题解决

    前言   1. 安装Docker   1.1 系统更新与依赖安装   1.2 添加华为云Docker仓库   2. 解决仓库配置错误   2.1 手动修改仓库配置文件   2.2 安装Docker
    的头像 发表于 12-26 18:12 2714次阅读
    在 Huawei Cloud EulerOS 系统中安装 <b class='flag-5'>Docker</b> 的详细步骤与常见问题解决