掌握Docker命令与Dockerfile实战技巧:快速构建高效容器化应用

《Python 应用容器化全攻略:Docker 原理解析与实战部署指南》 本文全面介绍了Python项目使用Docker容器化的完整流程。首先阐述了Docker解决环境一致性、快速部署等核心价值,详细解析了Docker镜像、容器等基础概念。文章以Flask应用为例,展示了从项目准备到Dockerfile编写(包含多阶段构建等进阶技巧)的全过程,并提供了构建、运行容器的具体命令。还介绍了.dockerignore、Docker Compose等最佳实践,以及部署到Heroku、AWS等云平台的方法。 阅读详情

1. 介绍

Docker 是现代开发和运维的必备工具,集成了容器技术的优势。本文将记录 Docker 的常用指令,并会随着使用经验的积累进行不定期更新。

2. 常用命令

2.1 启动容器(前台交互模式)

docker run --privileged --volume /home/xx/project/:/project/ -it test_x86_deployed:latest /bin/bash
  • –privileged:授予容器额外的权限(例如设备访问)。
  • –volume /home/xx/project/:/project/:将宿主机的 /home/xx/project/ 目录挂载到容器内的 /project/ 目录。
  • -it:以交互模式启动容器,并连接终端。
  • /bin/bash:启动容器时进入 Bash 环境。

2.2 提交容器为镜像

docker commit -m "更新内容描述" -a "作者信息" [容器id] [输出镜像名称]
  • -m:提交镜像时添加提交信息。
  • -a:设置提交的作者信息。

启动容器(后台模式)

docker run --privileged --volume /home/xx/project/:/project/ -t -d test_x86_deployed:latest /bin/bash
  • -t:分配一个伪终端。
  • -d:以后台模式运行容器。

2.3 打开多个终端

docker exec -it [容器id] bash
  • exec:在运行中的容器中执行命令。
  • -it:进入交互式终端。

2.4 退出容器并删除容器

# 显示所有容器
docker ps -a

# 停止容器
docker stop [容器id_or_名称]

# 停止所有容器
docker stop $(docker ps -aq)

# 删除所有容器
docker rm $(docker ps -aq)
  • docker ps -a:列出所有容器(包括停止的)。
  • docker stop:停止容器。
  • docker rm:删除容器。

2.5 保存容器为镜像

docker save -o <output-file>.tar <image-name>
  • -o .tar:指定保存的文件路径及名称。
  • :要保存的镜像名称。

2.6 加载镜像

docker load -i <output-file>.tar
  • -i .tar:加载镜像文件。

2.7 删除镜像

docker rmi [镜像id或镜像名称]
  • rmi:删除镜像。

3. Dockerfile 实战

3.1 介绍

Dockerfile 是一个文本文件,包含一系列指令,用于定义如何构建一个 Docker 镜像。通过这些指令,你可以指定操作系统、安装软件、配置环境变量、复制文件等,最终自动化构建容器镜像。

3.2 Dockerfile 基本结构

一个标准的 Dockerfile 包含以下指令:

FROM:指定基础镜像。
RUN:在镜像中执行命令(如安装软件包)。
COPY 或 ADD:将文件从宿主机复制到镜像中。
WORKDIR:设置工作目录。
CMD 或 ENTRYPOINT:容器启动时执行的命令。
EXPOSE:声明容器暴露的端口。
ENV:设置环境变量。
USER:指定执行容器命令的用户。

3.3 Dockerfile 实战练习

以下是一个基本的 Dockerfile 示例,构建一个 Python 环境的镜像:

# 1. 使用官方 Python 3.9 镜像作为基础镜像
FROM python:3.9-slim

# 2. 设置工作目录为 /app
WORKDIR /app

# 3. 将当前目录的文件复制到容器的 /app 目录
COPY . /app

# 4. 安装 Python 依赖
RUN pip install --no-cache-dir -r requirements.txt

# 5. 暴露容器的 80 端口(根据需要调整)
EXPOSE 80

# 6. 设置环境变量(可选)
ENV APP_ENV=production

# 7. 指定容器启动时执行的命令
CMD ["python", "app.py"]

3.4 构建与运行镜像

构建镜像:

docker build -t my-python-app .
  • -t my-python-app:指定构建镜像的标签(名字)。
  • .:表示 Dockerfile 所在的当前目录。

运行容器:

docker run -p 4000:80 my-python-app
  • -p 4000:80:将容器的 80 端口映射到宿主机的 4000 端口。
  • my-python-app:你之前构建的镜像名称。

4. 小结

本文介绍了 Docker 的一些常用命令和 Dockerfile 的基本使用。Dockerfile 可以帮助你快速构建和部署容器化应用,熟练掌握这些指令,将大大提升你在容器化应用开发与管理中的效率。如果你有其他问题,或希望了解更多 Docker 的高级功能,欢迎继续关注后续更新。

Vivado FIR Complier_IP核使用方法 文章依靠该IP核对应手册PG149写的,因为笔者需求简单,没有深入挖掘功能,可以自行下载学习。 阅读详情

相关推荐

GD32_ADC采样+DMA多通道扫描传输

所使用的MCU 片上集成了 12 位逐次逼近式模数转换器模块(ADC),可以采样来自于 16 个外部通道和 2 个内部通道上的模拟信号。这 18 个 ADC 采样通道都支持多种运行模式,采样转换后,转换结果可以按照最低有效位对齐或最高有效位对齐的方式保存在相应的数据寄存器中。我们主要介绍其多通道扫描转换和DMA传输功能,在多个通道轮询采集ad数据,并使用DMA分别保存各个数据值,其能大大提高ADC的工作效率。以下为ADC 模块框图:

Yin_w的博客 8159

Docker镜像构建指南:Dockerfile语法与docker build命令全解析

Docker镜像是将应用程序及其依赖打包成标准化文件的核心技术,确保跨环境一致性。本文介绍了两种镜像制作方式:docker commit(简单但不推荐)和Dockerfile(主流标准方法)。重点解析了Dockerfile的配置要点,包括FROM(基础镜像)、LABEL(元数据)、COPY/ADD(文件复制)、WORKDIR(工作目录)、ENV(环境变量)等核心指令的使用规范与实战示例。通过Dockerfile可实现自动化、可重复、透明化的镜像构建

2302_80105876的博客 7566

腾讯文档API逆向分析:不用Selenium也能批量导出的黑科技

本文揭秘了如何通过Python逆向分析腾讯文档的隐藏API,实现无需Selenium即可批量导出在线表格的高效方法。详细解析了API调用流程、Cookie维护及异常处理技巧,相比传统方案性能提升显著,适用于大量文档导出的自动化场景。

h9j8k7l6m5n的博客 1201

Docker容器化:快速部署Web应用的步骤

本文详细介绍了Docker容器化快速部署Web应用的步骤,包括编写Dockerfile、构建Docker镜像、运行容器、监控与管理等。Docker容器化技术以其环境一致性、资源隔离等优势,为Web应用的快速部署提供了有力支持。在未来,随着Docker技术的不断发展和完善,容器化部署将更加便捷和高效。同时,我们也需要关注容器化部署中的安全问题,如容器逃逸、镜像漏洞等。通过不断学习和实践,我们可以更好地利用Docker容器化技术,为Web应用的快速部署提供保障。

2501_92489014的博客 2204

GEO数据挖掘实战:用R语言从GSE42872数据集中找到关键差异基因(附完整代码)

本文详细介绍了使用R语言从GSE42872数据集中挖掘关键差异基因的完整流程,包括数据下载、探针ID转换、差异表达分析和功能富集分析。通过实战代码演示,帮助生信研究者掌握GEO数据挖掘的核心技术,快速识别疾病相关基因并理解其生物学功能。

weixin_42625070的博客 365

PLC期末速成——顺序功能图转梯形图

一、根据顺序功能图写出梯形图程序 顺序功能图: 梯形图: 1、程序段1,系统运行标志M0.0的启-保-停控制电路。 2、程序段2,PLC上电与逆行,初始化脉冲M1.0激活初始化步M2.0。 3、程序段3,当M2.0初始化步为活动步,并且M0.0系统运行标志位为1时,置位M2.1步,复位M2.0步。 4、当M2.1为活动步,并且I0.3中液位传感器为1时,置位M2.2步,复位M2.1步。 5、程序段5,当M2.2为活动步,并且I0.2高液位传感器为1时,置位M2.3步,复位M2.2步。 6、程序段

qq_52251819的博客 1万+

Docker实战:构建高效的容器化应用

通过本文的阐述,我们可以看到Docker在构建高效容器化应用中的重要作用。Docker不仅提高了开发效率和简化了部署过程,还提供了强大的容器编排和安全管理功能。在未来的发展中,我们应该继续探索Docker的最佳实践,以提高应用的性能和安全性。为了实现这一目标,建议开发者和运维人员深入学习Docker的特性和功能,掌握容器化应用的构建和部署技巧。同时,也期待更多的企业和组织能够在实践中分享他们的经验和见解,共同推动容器技术的发展。

2501_92488972的博客 636

零信任架构实战:“持续验证+动态授权”全流程解析(附策略引擎联动图)

《零信任实战指南:7图拆解核心流程与行业案例》摘要:本文通过7张架构图系统解析零信任五大核心流程:强身份认证、设备检查、动态授权、持续监控和自动降权。对比金融(重数据审计)与制造业(重物理绑定)的落地差异,指出三大常见误区及解决方案。数据显示,零信任可使安全响应提速60%,泄露成本降低45%。文章提供6个月实施路线图,强调零信任是"智能信任"体系,建议企业分阶段改造,优先保护核心系统。附赠金融/制造行业策略模板及甘特图示例。(149字)

sara_han的博客 773

从瀑布到流水线:DevOps 入门与 GitLab + Jenkins + Docker 落地实践

先看清软件开发生命周期(SDLC)的全貌,再对比瀑布模型与敏捷开发,随后进入持续集成与 CI/CD 的机制内核;最后落到实操——在 GitLab、Jenkins、Docker 组成的四机实验环境里,走完源码托管、自动化构建、镜像封装与远程部署,直到参数化构建与版本回滚。概念与命令并重,既是入门地图,也是操作手册。

年轻的时候很穷,经过我多年的努力,终于不再年轻。 230

华为OD机试2025C卷-双十一最大花费金额[100分](Java_Python3_C++_C语言_JsNode_Go)实现100%通过率

双十一最大花费金额 - 动态规划解法 摘要:本文介绍了华为OD机试中"双十一最大花费金额"问题的动态规划解法。该问题要求在给定N件商品价格和优惠券面额X的情况下,选择若干商品使总花费不超过X且尽可能大。核心解法采用布尔型动态规划数组,记录每个金额是否可被拼出。算法时间复杂度为O(N*X),空间复杂度为O(X)。通过倒序遍历避免重复选择同一商品,最后从X向下查找第一个可达金额作为答案。文中提供了C++和Java的实现代码,并解释了与经典0-1背包问题的关系。 关键点: 问题本质是0-1背包/子集和问题的变体

2503_91057718的博客 46

YOLOv11改进 | Neck篇 | 双向特征金字塔网络BiFPN助力YOLOv11有效涨点

本文给大家带来的改进机制是BiFPN双向特征金字塔网络,其是一种特征融合层的结构,也就是我们本文改进YOLOv11模型中的Neck部分,它的主要思想是通过多层级的特征金字塔和双向信息传递来提高精度。本文给大家带来的结构可以让大家自行调节网络结构大小,同时能够达到一定的轻量化效果,为什么发BiFPN呢因为它算是YOLO系列改进中的常青树了,大家可以借鉴它的双向特征思想来创新自己的Neck结构本文的BiFPN通过yaml文件配置可以让大家自行调配其结构。

Snu77的博客 9094

Docker系列---Dockerfile镜像文件

从零构建属于自己的 Docker 镜像

努力向上的大学生一枚⭐ 145

C# WPF上位机开发(利用tcp/ip网络访问plc)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 c# wpf如果是用来开发非标上位机的,那么和plc的通信肯定是少不了的。而且,大部分plc都支持modbus协议,所以这个时候如果有一个库可以帮助我们和plc设备进行modbus通信,那就非常方便的。目前NuGet下关于modbus的函数库还是有一些的,比如EasyModbus。

嵌入式-老费,一个分享专业嵌入式知识的blog 2528

docker 基础教程

下载好之后如果 pull 镜像失败,可以进入配置镜像源。完成之后:sudo systemctl restart docker重启生效(作者用的是 Ubuntu,其它不同版本系统可能会有差异,有需要可以 AI search 一下)

xuxiaohei222的博客 249

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

docker dockerfile镜像制作零基础实操手册

适用对象:没写过 Dockerfile、只会敲几条 docker 命令的运维新手。环境约定:构建机 192.168.28.100(已装 Docker 和 Harbor),私有仓库 192.168.28.100,项目 ruoyi-project,账号 admin / Harbor12345。

Whiteknight2026的博客 181

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

DevOps入门-下篇-GitLab-Jenkins-Docker实战

打开demo_web项目 → 菜单VCS→Git→Push(或Remotes)→字段值NameoriginURLURL 直接从 GitLab 项目首页复制(Clone →),别手打,容易多斜杠。实践对应概念解决的问题GitLab 托管 + 分支管理版本控制代码唯一可信来源Jenkins 拉取并自动构建持续集成不再手工打包,问题早发现Maven 统一构建可重复构建谁打出来的包都一样Publish over SSH 自动推送持续交付部署不再是手工活Dockerfile 进仓库。

weixin_45488455的博客 623

Docker 部署 WordPress+MySQL 高可用架构

点「安装 WordPress」

一直在努力学习的菜鸟 219

Docker更新SSL证书后容器仍读旧文件:单文件挂载与目录挂载排查

宿主机证书已替换,容器里却还是旧内容?区分单文件绑定挂载、目录内替换和服务进程加载,再检查Certbot live软链接的目标是否可达。用无网络隔离容器复现文件可见性,不把读到新文件当成HTTPS已生效。

谁呀!的博客 430

如何在本地 Docker 容器中运行 Redis,并使用 Redis Insight 和 Redis CLI 进行管理

本文教程介绍了如何使用Docker本地运行Redis服务器与RedisInsight,实现数据的可视化管理。通过RedisInsight和RedisCLI,学习了对哈希、字符串、列表、集合、有序集、流及JSON等数据类型的增删改查(CRUD)操作,涵盖HSET、GET、SADD、XADD等核心命令,帮助开发者高效掌握Redis基本用法。

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 268

从零开始用 Docker 部署 Hoppscotch:自建 API 调试平台的完整教程

Hoppscotch是一款开源、轻量、跨平台的API调试工具,支持HTTP、WebSocket、GraphQL等多协议,具备接口调试、文档生成、Mock模拟、团队协作等功能。基于Docker可快速部署,支持私有化自托管,资源占用低,完全离线使用,数据安全可控。相比Postman等工具,其开源免费、无功能限制,适合个人与企业研发全周期使用。

专注大数据、云计算、人工智能、机器人领域技术传播 282

Docker跑Java踩了个大坑,容器显示8核实际只用到1核

小坏分享真实踩坑:Docker中Java应用因未配置容器感知,导致8核机器仅用1核。根源是JVM误读CPU核心数,引发GC、线程池等性能严重缩水。解决方案:显式添加-XX:+UseContainerSupport -XX:ActiveProcessorCount=8,并合理设置堆内存(如3g/4g容器)、启用G1GC及优化参数。附生产级Dockerfile模板,确保性能不“偷跑”。

小坏说Java,一个专注Java微服务架构的实战,Java全栈教程,SpringBoot, SpringCloud微服务到分布式、高并发架构,大数据开发,运维实战,K8S、Docker容器为一体的教程,结合企业级内部的技术栈学习 386

Dify 1.18 本地部署实战:Windows + WSL2 + Docker,从零跑到本地可用

你想在自己电脑上跑一套 Dify:提示词编排、知识库、Agent 流程都放本地,数据不出内网,也不用买云主机。真动手时会卡在四个地方:Windows 的 80 端口被系统占着、默认向量库镜像拉不动、容器起来又反复重启、重启电脑后打不开。本文按动手顺序给一条跑通的路线:WSL2 装 Ubuntu(不需要管理员权限)、Docker 换能用的镜像源、`.env` 只改 4 项、15 个容器全绿、管理员建好,最后附 7 个实测报错和一套开机自启方案。装完你就有了一个能自己建应用、接国产模型、把网页发给同

Blockbuster-drug 848

Docker概念和镜像管理

容器属于,依靠Linux内核Namespace(做隔离)、Cgroups(做资源限制)实现。把应用、依赖库、配置、环境变量打包,在宿主机上隔离运行。

2503_92430124的博客 404

【2026】Windows10下载Docker Desktop安装与汉化教程

Docker Desktop 是 Docker, Inc. 官方推出的桌面端容器管理程序,把 Docker 引擎、命令行工具、镜像仓库与图形界面整合到了一起。与单独使用 Docker Engine 不同,它把镜像、容器、数据卷和日志统一管理在一个界面里,免去了手动配置环境的步骤。2026 年 8 月发布的 4.88.1 版本进一步强化了桌面体验,内置 Compose、单节点 Kubernetes 与镜像加速配置,并支持在 Windows ARM 设备上原生运行。注:个人试了还真就是只支持。

yang958554999的博客 227

Linux 中 nohup 为什么无法阻止进程退出?从 Docker、SSH、SIGHUP 到 setsid 的完整排查 SSH断开后后台进程为何退出?

在 Linux 中,信号(Signal)是一种通知进程发生了某个事件的机制。可以把进程理解为正在工作的员工,信号就是系统发送给员工的通知。用户按下Ctrl+C,通知程序中断运行。用户关闭终端,可能触发挂断信号。系统要求程序结束,可以发送终止信号。操作系统检测到非法内存访问,可以向程序发送异常信号。这些通知都是通过 Linux 信号机制实现的。信号编号(Linux)作用SIGHUP1挂断信号,通常与终端断开有关SIGINT2中断信号,常见于 Ctrl+CSIGKILL9。

Go_ahead_forever的博客 213

[Playwright] [15]CI/CD 实战:Docker Compose + GitHub Actions 自动运行 E2E 测试

手动触发 GitHub Actions → Docker Compose 启动应用 → 检查服务就绪 → Playwright 执行 E2E 测试 → 上传报告 → 清理环境。通过这套流程,我不再需要每次手动启动应用并执行测试,也可以在 GitHub Actions 中查看测试结果。目前 Workflow 使用手动触发。如果有权限,理想中应该增加push或触发条件,让代码每次git push更新时自动执行 E2E 测试。

stay hungry stay foolish 235

Docker基础知识/命令

Dockerfile是一个文本文件,详细列出了如何制作Docker镜像的步骤和指令,可类比为制作模具的图纸。

2501_93795263的博客 171
上一篇: RV1126平台下的MobileSeg量化指南:高效部署低算力硬件
下一篇: Python 性能优化全攻略:从简单代码改进到高效并行化
Yao.Li
博客等级 码龄10年 405粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yao.Li

爱的魔力,一被卡布奇诺~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值