mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 16:37:34 +00:00
Fix Chinese curly quotes in prose text
This commit is contained in:
@@ -8,7 +8,7 @@ Ubuntu 是 Docker 最常用的运行环境之一。本节将介绍如何在 Ubun
|
||||
|
||||
- **版本管理**:通过 APT 源安装的 Docker,后续可以像管理其他系统软件包一样进行更新和版本管理
|
||||
- **安全补丁**:Ubuntu 官方仓库会及时推送 Docker 的安全更新,这在生产环境中至关重要
|
||||
- **一致性**:同一 Ubuntu 版本上的团队成员安装的 Docker 版本完全一致,避免了"在我的机器上可以运行"的问题
|
||||
- **一致性**:同一 Ubuntu 版本上的团队成员安装的 Docker 版本完全一致,避免了“在我的机器上可以运行”的问题
|
||||
- **卸载干净**:APT 包管理系统会负责清理所有相关文件,脚本安装的清理往往不够彻底
|
||||
|
||||
如果你只是想快速尝试 Docker,脚本安装没有问题;但一旦涉及持久运维,APT 源是更成熟的选择。
|
||||
|
||||
@@ -13,7 +13,7 @@ Docker 分为 `stable` `test` 和 `nightly` 三个更新频道。
|
||||
**生产环境**(服务器部署):
|
||||
- 优先使用**官方 APT/YUM 源安装**(Ubuntu、Debian、Fedora、CentOS)
|
||||
- 优势:获得官方安全更新、长期技术支持、版本管理清晰
|
||||
- 安装步骤稍多一些,但这种"麻烦"是值得的——它为你的生产系统争取了稳定性和可维护性
|
||||
- 安装步骤稍多一些,但这种“麻烦”是值得的——它为你的生产系统争取了稳定性和可维护性
|
||||
|
||||
**开发环境**(本地开发机、测试服务器):
|
||||
- 使用**脚本自动安装**或**包管理器直接安装**
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
## 7.5 ENTRYPOINT 入口点
|
||||
|
||||
### 何时使用 ENTRYPOINT:从"容器"到"命令"
|
||||
### 何时使用 ENTRYPOINT:从“容器”到“命令”
|
||||
|
||||
如果说 CMD 是"容器中的默认程序",那么 ENTRYPOINT 就是"把容器变成一个命令"。这个思维转变决定了你何时使用 ENTRYPOINT。
|
||||
如果说 CMD 是“容器中的默认程序”,那么 ENTRYPOINT 就是“把容器变成一个命令”。这个思维转变决定了你何时使用 ENTRYPOINT。
|
||||
|
||||
**使用 ENTRYPOINT 的典型场景**:
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
# docker run myimage --port 9000 → python app.py --port 9000
|
||||
```
|
||||
|
||||
**对比 CMD**:如果没有这些"把容器当命令用"的需求,通常使用 CMD 就足够了。
|
||||
**对比 CMD**:如果没有这些“把容器当命令用”的需求,通常使用 CMD 就足够了。
|
||||
|
||||
### 7.5.1 什么是 ENTRYPOINT
|
||||
|
||||
|
||||
@@ -15,15 +15,15 @@ Dockerfile 是一个文本文件,其内包含了一条条的 **指令 (Instruc
|
||||
|
||||
## Dockerfile 编写哲学
|
||||
|
||||
在深入每个指令的细节之前,笔者想强调一个至关重要的原则:**Dockerfile 不是脚本,而是镜像的"设计图"**。这个区别决定了你如何思考每条指令的作用。
|
||||
在深入每个指令的细节之前,笔者想强调一个至关重要的原则:**Dockerfile 不是脚本,而是镜像的“设计图”**。这个区别决定了你如何思考每条指令的作用。
|
||||
|
||||
相比编写 Bash 脚本的思维("按顺序执行这些命令"),Dockerfile 的思维应该是("这一层镜像应该如何构建,下一层如何分层")。这个思维转变会影响你的决策:
|
||||
相比编写 Bash 脚本的思维(“按顺序执行这些命令”),Dockerfile 的思维应该是(“这一层镜像应该如何构建,下一层如何分层”)。这个思维转变会影响你的决策:
|
||||
|
||||
- **合并命令**:一个 `RUN apt-get update && apt-get install ...` 应该写在一起,而不是分开成多个 `RUN` 指令,因为它们是同一个"层"的逻辑
|
||||
- **合并命令**:一个 `RUN apt-get update && apt-get install ...` 应该写在一起,而不是分开成多个 `RUN` 指令,因为它们是同一个“层”的逻辑
|
||||
- **选择合适的指令**:`COPY` vs `ADD`、`CMD` vs `ENTRYPOINT` 这些选择不是随意的,而是根据镜像分层的语义来决定的
|
||||
- **优化镜像大小**:最后才清理缓存、删除临时文件,让这些"瘦身"操作在同一层完成
|
||||
- **优化镜像大小**:最后才清理缓存、删除临时文件,让这些“瘦身”操作在同一层完成
|
||||
|
||||
这个章节将详细介绍各个指令。在学习指令语法时,请始终思考:"这个指令为什么要以这样的方式工作?如果我是 Docker,我应该如何设计它?"
|
||||
这个章节将详细介绍各个指令。在学习指令语法时,请始终思考:“这个指令为什么要以这样的方式工作?如果我是 Docker,我应该如何设计它?”
|
||||
|
||||
## Dockerfile 基本结构
|
||||
|
||||
|
||||
Reference in New Issue
Block a user