<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Docker on Chen Kai Blog</title><link>https://www.chenk.top/zh/tags/docker/</link><description>Recent content in Docker on Chen Kai Blog</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Fri, 23 Jun 2023 09:00:00 +0000</lastBuildDate><atom:link href="https://www.chenk.top/zh/tags/docker/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker 与容器（八）：超越 Docker —— Kubernetes、Swarm 及未来演进</title><link>https://www.chenk.top/zh/docker-containers/08-orchestration-preview/</link><pubDate>Fri, 23 Jun 2023 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/docker-containers/08-orchestration-preview/</guid><description>&lt;p>本系列此前的内容均围绕&lt;strong>单机版 Docker&lt;/strong>展开，即仅在一台机器上运行容器。这种方式非常适合开发、小型项目以及流量适中的应用。然而，一旦你需要服务在服务器宕机时仍能存活、应对突发流量高峰，或实现零停机部署更新，单机版 Docker 就显得力不从心了。而**容器编排（Container Orchestration）**正是为解决这些问题而生，其中 Kubernetes 已成为事实上的行业标准。&lt;/p></description></item><item><title>Docker 与容器（七）：安全——运行容器时不必交出全部权限</title><link>https://www.chenk.top/zh/docker-containers/07-security-and-best-practices/</link><pubDate>Thu, 22 Jun 2023 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/docker-containers/07-security-and-best-practices/</guid><description>&lt;p>Docker 默认配置优先便利性而非安全性：开箱即用时容器以 root（UID 0）运行、拥有大量 Linux capabilities，且根文件系统默认可写。开发环境或许可以接受，但生产环境中极其危险——一旦存在容器逃逸（container escape）漏洞，而容器又以 root 权限运行，攻击者将直接接管宿主机。让我们来修复这个问题。&lt;/p></description></item><item><title>Docker 与容器（六）：调试与日志——当‘盒子’内部出问题时</title><link>https://www.chenk.top/zh/docker-containers/06-debugging-and-logging/</link><pubDate>Wed, 21 Jun 2023 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/docker-containers/06-debugging-and-logging/</guid><description>&lt;p>正常运行的容器近乎‘隐形’，而一旦出问题，它就立刻变成一个密不透风的‘黑盒’。容器化的核心优势在于隔离，但恰恰是这种隔离，让调试变得棘手——你没法像对待普通服务器那样直接 &lt;code>ssh&lt;/code> 进去，也无法从宿主机随意浏览容器内部的文件系统。好在 Docker 提供了一整套专用工具，帮助你检查、诊断并理解运行中（甚至已崩溃）容器内部究竟发生了什么。&lt;/p></description></item><item><title>Docker 与容器（五）：Docker Compose——多容器应用</title><link>https://www.chenk.top/zh/docker-containers/05-docker-compose/</link><pubDate>Tue, 20 Jun 2023 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/docker-containers/05-docker-compose/</guid><description>&lt;p>前几篇文章介绍了如何使用 &lt;code>docker run&lt;/code> 运行容器、用 &lt;code>-p&lt;/code> 参数映射端口、用 &lt;code>docker network create&lt;/code> 创建网络，以及用 &lt;code>-v&lt;/code> 挂载卷。现在试想一下：每次启动开发环境时，都要为 Web 服务器、API 后端、数据库、缓存和任务队列分别执行这些操作——这将变得极其繁琐。Docker Compose 将原本需要 20 多条命令完成的工作，简化为一个文件和一条命令：&lt;code>docker compose up&lt;/code>。&lt;/p></description></item><item><title>Docker 与容器（四）：网络与卷——容器如何通信与持久化数据</title><link>https://www.chenk.top/zh/docker-containers/04-networking-and-volumes/</link><pubDate>Mon, 19 Jun 2023 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/docker-containers/04-networking-and-volumes/</guid><description>&lt;p>容器被刻意设计为相互隔离，这正是其核心价值；但实际应用必须能接收外部连接、与数据库通信，并持久化容器重启后仍需保留的数据。Docker 通过&lt;strong>网络（Networking）&lt;/strong>（管理容器间及对外通信）和&lt;strong>卷（Volumes）&lt;/strong>（实现数据持久化）来满足这些需求；二者配置是否合理，直接决定了环境是仅供演示（demo）还是可用于生产（deployment）。&lt;/p></description></item><item><title>Docker 与容器（三）：Dockerfile 最佳实践 —— 从初学者到生产环境</title><link>https://www.chenk.top/zh/docker-containers/03-dockerfile-patterns/</link><pubDate>Sun, 18 Jun 2023 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/docker-containers/03-dockerfile-patterns/</guid><description>&lt;p>大多数教程只展示一个 5 行的 Dockerfile 就匆匆略过，结果你部署到生产环境后才发现：镜像体积高达 1.2 GB，哪怕只改一行代码也要花 8 分钟构建，安全团队更是在报告中反复指出——那些你甚至不知道自己安装过的软件包存在严重漏洞。编写一份优秀的 Dockerfile 是一项关键技能，在每次 CI 流水线运行时都能带来持续回报。&lt;/p></description></item><item><title>Docker 与容器（二）：镜像与分层——`docker pull` 到底下载了什么？</title><link>https://www.chenk.top/zh/docker-containers/02-images-and-layers/</link><pubDate>Sat, 17 Jun 2023 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/docker-containers/02-images-and-layers/</guid><description>&lt;p>第一次运行 &lt;code>docker pull ubuntu&lt;/code> 时，我本以为会下载一整套操作系统，结果几秒就完成了，体积仅 77 MB——对一个 Linux 发行版来说，这小得不可思议。其中的奥秘正是「分层」（layers）；而一旦理解分层的工作原理，你构建和分发容器的方式也会随之改变。&lt;/p></description></item><item><title>Docker 与容器（一）：为何需要容器——虚拟机未能解决的问题</title><link>https://www.chenk.top/zh/docker-containers/01-why-containers/</link><pubDate>Fri, 16 Jun 2023 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/docker-containers/01-why-containers/</guid><description>&lt;p>每位开发者都听过那句经典吐槽：“在我机器上是能跑的。”虚拟机确实解决了这个问题，但代价不菲——动辄数 GB 的内存占用、几分钟的启动时间，以及为每个应用单独部署一整套操作系统。&lt;/p></description></item><item><title>云计算（三）：云原生与容器技术</title><link>https://www.chenk.top/zh/cloud-computing/cloud-native-containers/</link><pubDate>Sat, 11 Mar 2023 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/cloud-computing/cloud-native-containers/</guid><description>&lt;p>从单体应用转向云原生架构，是过去十年软件工程领域最具深远影响的变革之一。容器与 Kubernetes 的名字早已耳熟能详，但真正值得深挖的是：&lt;strong>为什么这套技术栈最终胜出？每一层究竟承担了什么职责？又有哪些关键“接缝”决定了你的平台体验是行云流水，还是步步迷宫？&lt;/strong>&lt;/p></description></item><item><title>云计算（二）：虚拟化技术深度解析</title><link>https://www.chenk.top/zh/cloud-computing/virtualization/</link><pubDate>Mon, 20 Feb 2023 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/cloud-computing/virtualization/</guid><description>&lt;p>没有虚拟化，就没有云计算。每个 EC2 实例、每次 Lambda 调用、每个 Kubernetes Pod，归根结底都依赖同一个核心技巧：&lt;strong>让操作系统对底层硬件深信不疑地“被骗”&lt;/strong>。本文将带你走完整个技术栈——从让这个把戏变得廉价的 CPU 指令，到主导市场的四大 Hypervisor，再到决定虚拟机性能是达到裸机 70% 还是 99% 的生产级调优参数。&lt;/p></description></item><item><title>Python 工程实践（七）：打包分发 —— 从 pip install 到 PyPI</title><link>https://www.chenk.top/zh/python-engineering/07-packaging-and-distribution/</link><pubDate>Sun, 24 Apr 2022 09:00:00 +0000</pubDate><guid>https://www.chenk.top/zh/python-engineering/07-packaging-and-distribution/</guid><description>&lt;p>你写了一个实用的小工具，同事找你要。你把文件夹打包成 ZIP 发过去，对方解压后运行 &lt;code>python main.py&lt;/code>，却报了 &lt;code>ModuleNotFoundError&lt;/code> —— 因为缺少依赖。他手动装上依赖，结果版本不对；更糟的是，他用的是 Python 3.8，而你的代码里用了 f-string 中的海象运算符（walrus operator），这在 3.8 里根本跑不了。&lt;/p></description></item></channel></rss>