2,997 讀數
2,997 讀數

这里有一些 Docker Hacks 改变了我的生活

经过 Pratik Pathak4m2025/05/01
Read on Terminal Reader
Read this story w/o Javascript

太長; 讀書

Docker 是一个强大的工具来构建和管理基于 Docker 的应用程序. 它已经成为我的日常生活的一部分,我几乎不再考虑它了。
featured image - 这里有一些 Docker Hacks 改变了我的生活
Pratik Pathak HackerNoon profile picture

好吧,让我们打破这个Docker的进化,事情是如何改变的。


还记得当Docker感觉像是......打一只粗糙的鸭子吗? 这么多命令,这么多概念。构建,运行,推,拖,卷,网络...我的头脑在旋转。应该,但它总是感觉有点杂,有点......充满摩擦。我的终端历史只是一个混乱。docker ps -a绝望地试图记住这个一个上周的指挥。


然后,慢慢地,事情开始点击,不是一个大的eureka时刻,而是一系列小小的“aha!”发现。小技巧,优化,工作流量调整。我如何做事.


以下是被困的游戏变更者:

终端代名词:保健节约者 ️

第一大胜利?Aliases.♂️ 為什麼我花了幾個月打字docker-compose up -d --builddocker ps一遍又一遍? 设置简单的代名词在我的.bashrc.zshrc这是一个启示。

# My sanity savers
alias dcu='docker-compose up -d'
alias dcd='docker-compose down'
alias dcb='docker-compose build'
alias dcr='docker-compose run --rm' # For running one-off commands
alias dps='docker ps'
alias dpa='docker ps -a'
alias di='docker images'
alias dip='docker image prune -f'  # Prune dangling images
alias dvp='docker volume prune -f' # Prune unused volumes
alias dsp='docker system prune -af' # The big cleanup! 💥


只是打字dcu哦,千秒节省了!听起来很微不足道,但每天以十几次来倍增......它增加了。我的手指感谢我。


从这里获取docker的最终Cheatsheet:黑客Cheatsheet

2、强者.dockerignore檔案名稱: 減肥下樓

然後來了.dockerignore另一个“duh”时刻. 我知道关于.gitignore当然,但我一开始没有意识到至关重要的是.dockerignore我的早期Docker构建是这么慢为什么?因为构建的背景是发送的一切回到Docker DAEMON。node_modules,日志,临时文件,本地构建文物......一切!


创建一个合适的.dockerignore文件,列出我不需要的所有垃圾内部图像构建过程? 突然,构建速度更快. 图像更小(有时大大大)。这个,忽略其余的。 更少的混乱,更快的反馈循环! 厨师的吻!

3、多阶段建筑:精细、中等生产机械➡️

Multi-stage builds...好吧,这个感觉起初有点先进。 这个概念很棒,尽管如此。

  • 步骤 1:使用基于图像的所有构建工具、编译器、 SDK 和依赖程序,以创建应用程序文物(如编译的二进制或包装的 JavaScript)。
  • 步骤 2:开始一个新的,干净的,最小基础图像(如山脉或不信任)。
  • 复制:只将第一阶段的最终文物复制到这个清洁的第二阶段。


结果?小型生产图像!而不是使用构建工具和开发人员依赖(这也是安全风险!),我发送含有 lean 图像的图像只有它花了一点时间把我的头包围在语法上,但哇,图像大小和安全姿势的差异是巨大的。

《Docker Compose Overrides: Taming Environments》

让我们谈谈Docker Compose override管理不同的环境曾经是痛苦的。开发者需要用于实时代码重新加载的卷,调试端口打开。Prod需要不同的环境变量,也许更严格的资源限制,也许是不同的入口点。docker-compose.yml混乱,涉及评论部分或复杂if以环境变量为基础。


发现docker-compose.override.yml这是纯粹的幸福. 你有你的基础docker-compose.yml使用通用配置. 然后,您创建docker-compose.override.yml(通常通过Git忽略的.gitignore)为您的本地开发调整 – 安装代码目录,暴露不同端口,添加调试工具。override您甚至可以使用某些文件,如docker-compose.prod.yml并使用该-f国旗:docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d. 清洁的关切分离. 没有更多的偶然行为的 dev 设置! 哈利路亚!

常规清洁:保持系统清洁 ✨

最后,习惯regular cleanupDocker 可以积累那么多如果你不小心,那么危险的图像(以前的构建中未标记的层),未使用的卷,停止的容器,旧的构建缓存...我的磁盘空间曾经神秘消失。


进入定期跑步的节奏docker system prune -af(攻击性的方法)或更有针对性的方法docker image prune,docker volume prune,docker network prune,和docker builder prune它使事情顺利运行,防止奇怪的缓存问题(“为什么我的变化不会出现?!”),并释放宝贵的千兆字节。dsp(我的语为docker system prune -af)现在是一个令人满意的,几乎是治疗的,例行。


所以是的,这些不再只是“黑客”了,它们是根深蒂固的,它们是肌肉记忆。.dockerignore这是我创建的第一个文件之一. 多阶段构建是潜在生存的任何事物的默认设置。 组合覆盖处理环境差异顺利。


Docker从那种粗糙的鸭子变成了强大的、简化的助手,现在就走出了我的路,构建速度更快,部署更顺利,我的磁盘空间更开心,诚实地说,我是它不仅仅是关于Docker本身;它是关于如何掌握这些小细节平滑了我的整个开发和部署工作流程. 它肯定已经成为我的生活的一部分,或者至少我的数字生活。

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks