diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 5dd82ba98..81f799510 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -9,15 +9,21 @@ /05_container/* @yeasy @khs1994 /06_repository/* @khs1994 /07_dockerfile/* @yeasy @khs1994 -/08_data_network/* @yeasy @khs1994 -/09_buildx/* @khs1994 -/10_compose/* @yeasy @khs1994 -/11_ops/* @yeasy @khs1994 -/12_orchestration/* @yeasy @khs1994 -/13_ecosystem/* @khs1994 -/14_implementation/* @yeasy @khs1994 -/15_cases/* @yeasy @khs1994 -/16_appendix/* @yeasy @khs1994 +/08_data/* @yeasy @khs1994 +/09_network/* @yeasy @khs1994 +/10_buildx/* @khs1994 +/11_compose/* @yeasy @khs1994 +/12_implementation/* @yeasy @khs1994 +/13_kubernetes_concepts/* @yeasy @khs1994 +/14_kubernetes_setup/* @yeasy @khs1994 +/15_etcd/* @yeasy @khs1994 +/16_cloud/* @khs1994 +/17_ecosystem/* @khs1994 +/18_security/* @yeasy @khs1994 +/19_observability/* @yeasy @khs1994 +/20_cases_os/* @yeasy @khs1994 +/21_case_devops/* @yeasy @khs1994 +/appendix/* @yeasy @khs1994 /.drone.yml @khs1994 /.editorconfig/ @khs1994 /.gitattributes @khs1994 diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md index 421e28a15..20f6d72bb 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report.md +++ b/.github/ISSUE_TEMPLATE/Bug_report.md @@ -36,9 +36,4 @@ about: Create a report to help us improve - - - - - diff --git a/.github/ISSUE_TEMPLATE/Custom.md b/.github/ISSUE_TEMPLATE/Custom.md index 7c713cec5..600fd11a6 100644 --- a/.github/ISSUE_TEMPLATE/Custom.md +++ b/.github/ISSUE_TEMPLATE/Custom.md @@ -36,9 +36,4 @@ about: Create a issue about Docker - - - - - diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 5cd0fb836..f2f9dfad4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -82,25 +82,15 @@ jobs: cp -r _images .vuepress/dist mkdir -p .vuepress/dist/appendix - cp -r 16_appendix/_images .vuepress/dist/appendix - mkdir -p .vuepress/dist/cases/ci/drone - cp -r 15_cases/ci/drone/_images .vuepress/dist/cases/ci/drone - mkdir -p .vuepress/dist/cases/os - cp -r 15_cases/os/_images .vuepress/dist/cases/os + cp -r appendix/_images .vuepress/dist/appendix mkdir -p .vuepress/dist/cloud - cp -r 13_ecosystem/cloud/_images .vuepress/dist/cloud + cp -r 16_cloud/_images .vuepress/dist/cloud mkdir -p .vuepress/dist/data_management - cp -r 08_data_network/data/_images .vuepress/dist/data_management + cp -r 08_data/_images .vuepress/dist/data_management mkdir -p .vuepress/dist/etcd - cp -r 12_orchestration/etcd/_images .vuepress/dist/etcd - mkdir -p .vuepress/dist/image - cp -r 04_image/_images .vuepress/dist/image - mkdir -p .vuepress/dist/install - cp -r 03_install/_images .vuepress/dist/install + cp -r 15_etcd/_images .vuepress/dist/etcd mkdir -p .vuepress/dist/kubernetes - cp -r 12_orchestration/kubernetes/_images .vuepress/dist/kubernetes - mkdir -p .vuepress/dist/underly - cp -r 14_implementation/_images .vuepress/dist/underly + cp -r 13_kubernetes_concepts/_images .vuepress/dist/kubernetes echo "include: [_images]" > .vuepress/dist/_config.yml - name: Upload Vuepress dist diff --git a/01_introduction/1.2_what.md b/01_introduction/1.2_what.md index 10f85c622..09bdeb6c5 100644 --- a/01_introduction/1.2_what.md +++ b/01_introduction/1.2_what.md @@ -60,8 +60,6 @@ flowchart LR #### 关键区别 -相关信息如下表: - | 特性 | Docker 容器 | 传统虚拟机 | |------|-------------|------------| | **启动速度** | 秒级 | 分钟级 | @@ -82,10 +80,6 @@ Docker 使用 [Go 语言](https://golang.google.cn/)开发,基于 Linux 内核 > 如果你对这些底层技术感兴趣,可以阅读本书的[底层实现](../12_implementation/README.md)章节。 -#### 概述 - -总体概述了以下内容。 - #### Docker 架构演进 Docker 的底层实现经历了多次演进: diff --git a/01_introduction/1.3_why.md b/01_introduction/1.3_why.md index d62c2e384..6c294f986 100644 --- a/01_introduction/1.3_why.md +++ b/01_introduction/1.3_why.md @@ -8,8 +8,6 @@ #### 场景一:“在我电脑上明明能跑” -具体内容如下: - ```bash 周五下午 5:00 ├── 开发者:代码写完了,本地测试通过,提交!🎉 @@ -28,8 +26,6 @@ #### 场景二:环境配置的噩梦 -具体内容如下: - ```bash 新同事入职 ├── Day 1:领电脑,配环境 @@ -41,8 +37,6 @@ #### 场景三:服务器迁移的恐惧 -具体内容如下: - ```bash 运维:"我们需要把服务迁移到新服务器" 开发:"旧服务器上的配置文档在哪?" @@ -54,14 +48,8 @@ Docker 的出现为上述问题提供了完美的解决方案。它通过 “一次构建,到处运行” 的核心理念,从根本上改变了软件交付的方式。 -#### 概述 - -总体概述了以下内容。 - #### 核心理念:一次构建,到处运行 -具体内容如下: - ```mermaid flowchart LR dev["开发团队"] -->|创建| img["Docker 镜像"] @@ -158,7 +146,7 @@ flowchart LR - 构建过程 **可重复、可追溯** - 任何人都能从代码重建完全相同的镜像 -- 配合 [GitHub Actions](../20_cases/ci/actions/README.md) 等 CI 系统实现自动化 +- 配合 [GitHub Actions](../21_case_devops/21.2_github_actions.md) 等 CI 系统实现自动化 #### 5. 轻松迁移 diff --git a/02_basic_concept/2.1_image.md b/02_basic_concept/2.1_image.md index 75c0ffe3c..a9bb39b0f 100644 --- a/02_basic_concept/2.1_image.md +++ b/02_basic_concept/2.1_image.md @@ -39,7 +39,9 @@ Docker 镜像是一个特殊的文件系统,包含: | **库文件** | libc、OpenSSL、各种依赖库 | | **配置文件** | nginx.conf、my.cnf 等 | | **环境变量** | PATH、LANG 等预设值 | -| **元数据**| 启动命令、暴露端口、数据卷定义 |**关键特性**: +| **元数据** | 启动命令、暴露端口、数据卷定义 | + +**关键特性**: - ✅ 镜像是 **只读** 的 - ✅ 镜像 **不包含** 动态数据 - ✅ 镜像构建后 **内容不会改变** @@ -140,8 +142,6 @@ RUN apt-get update && \ #### 查看镜像的分层 -运行以下命令: - ```bash ## 查看镜像的历史(每层的构建记录) diff --git a/02_basic_concept/2.2_container.md b/02_basic_concept/2.2_container.md index 44f3ff858..1dad58bb3 100644 --- a/02_basic_concept/2.2_container.md +++ b/02_basic_concept/2.2_container.md @@ -12,7 +12,7 @@ ### 2.2.2 容器的本质 -> 💡 **笔者认为,理解这一点是理解 Docker 的关键****容器的本质是一个特殊的进程。** +> 💡 **笔者认为,理解这一点是理解 Docker 的关键:** **容器的本质是一个特殊的进程。** ```mermaid flowchart TD @@ -166,14 +166,8 @@ stateDiagram-v2 图 2-1 容器生命周期状态流转图 -#### 概述 - -总体概述了以下内容。 - #### 常用生命周期命令 -运行以下命令: - ```bash ## 创建并启动容器(最常用) diff --git a/02_basic_concept/2.3_repository.md b/02_basic_concept/2.3_repository.md index c2e5f65ac..7b865a7ca 100644 --- a/02_basic_concept/2.3_repository.md +++ b/02_basic_concept/2.3_repository.md @@ -210,8 +210,6 @@ $ docker pull localhost:5000/myapp:v1.0 #### 常用命令 -运行以下命令: - ```bash ## 登录 Registry @@ -279,8 +277,6 @@ $ cosign verify --key cosign.pub $IMAGE #### 漏洞扫描 -运行以下命令: - ```bash ## 使用 Docker Scout 扫描镜像漏洞 diff --git a/02_basic_concept/README.md b/02_basic_concept/README.md index fea3145bd..d82c3cec1 100644 --- a/02_basic_concept/README.md +++ b/02_basic_concept/README.md @@ -1,4 +1,4 @@ -# 第二章基本概念 +# 第二章 基本概念 **Docker** 包括三个基本概念: diff --git a/02_basic_concept/summary.md b/02_basic_concept/summary.md index bdcbeef8c..3da222d0c 100644 --- a/02_basic_concept/summary.md +++ b/02_basic_concept/summary.md @@ -1,7 +1,5 @@ ## 2.4 本章小结 -相关信息如下表: - | 概念 | 要点 | |------|------| | **镜像是什么** | 只读的应用模板,包含运行所需的一切 | diff --git a/03_install/3.1_ubuntu.md b/03_install/3.1_ubuntu.md index a89cad17a..fb910ed3a 100644 --- a/03_install/3.1_ubuntu.md +++ b/03_install/3.1_ubuntu.md @@ -86,10 +86,6 @@ $ echo \ >以上命令会添加稳定版本的 Docker APT 镜像源,如果需要测试版本的 Docker 请将 stable 改为 test。 -#### 概述 - -总体概述了以下内容。 - #### 安装 Docker 更新 apt 软件包缓存,并安装 `docker-ce`: @@ -119,8 +115,6 @@ $ sudo sh get-docker.sh --mirror Aliyun ### 3.1.4 启动 Docker -运行以下命令: - ```bash $ sudo systemctl enable docker $ sudo systemctl start docker @@ -146,8 +140,6 @@ $ sudo usermod -aG docker $USER ### 3.1.6 测试 Docker 是否安装正确 -运行以下命令: - ```bash $ docker run --rm hello-world diff --git a/03_install/3.2_debian.md b/03_install/3.2_debian.md index b22844e70..31794286f 100644 --- a/03_install/3.2_debian.md +++ b/03_install/3.2_debian.md @@ -77,10 +77,6 @@ $ echo \ >以上命令会添加稳定版本的 Docker APT 源,如果需要测试版本的 Docker 请将 stable 改为 test。Debian11 可能不使用 `/etc/apt/keyrings/`,如 gpg 错误可以考虑更换为 `/etc/apt/trusted.gpg.d`,见 [issue 15727](https://github.com/docker/docs/issues/15727)。 -#### 概述 - -总体概述了以下内容。 - #### 安装 Docker 更新 apt 软件包缓存,并安装 `docker-ce`。 @@ -110,8 +106,6 @@ $ sudo sh get-docker.sh --mirror Aliyun ### 3.2.4 启动 Docker -运行以下命令: - ```bash $ sudo systemctl enable docker $ sudo systemctl start docker @@ -137,8 +131,6 @@ $ sudo usermod -aG docker $USER ### 3.2.6 测试 Docker 是否安装正确 -运行以下命令: - ```bash $ docker run --rm hello-world diff --git a/03_install/3.3_fedora.md b/03_install/3.3_fedora.md index 31abb3540..c0289c475 100644 --- a/03_install/3.3_fedora.md +++ b/03_install/3.3_fedora.md @@ -76,10 +76,6 @@ $ sudo dnf config-manager --set-enabled docker-ce-test $ sudo dnf config-manager --set-disabled docker-ce-test ``` -#### 概述 - -总体概述了以下内容。 - #### 安装 Docker 更新 `dnf` 软件源缓存,并安装 `docker-ce`。 @@ -118,8 +114,6 @@ $ sudo sh get-docker.sh --mirror Aliyun ### 3.3.4 启动 Docker -运行以下命令: - ```bash $ sudo systemctl enable docker $ sudo systemctl start docker @@ -145,8 +139,6 @@ $ sudo usermod -aG docker $USER ### 3.3.6 测试 Docker 是否安装正确 -运行以下命令: - ```bash $ docker run --rm hello-world diff --git a/03_install/3.4_centos.md b/03_install/3.4_centos.md index 3d66a1377..a14930f3a 100644 --- a/03_install/3.4_centos.md +++ b/03_install/3.4_centos.md @@ -72,10 +72,6 @@ $ sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.r $ sudo dnf config-manager --set-enabled docker-ce-test ``` -#### 概述 - -总体概述了以下内容。 - #### 安装 Docker 更新 `dnf` 软件源缓存,并安装 `docker-ce`。 @@ -123,8 +119,6 @@ $ sudo sh get-docker.sh --mirror Aliyun ### 3.4.5 启动 Docker -运行以下命令: - ```bash $ sudo systemctl enable docker $ sudo systemctl start docker @@ -150,8 +144,6 @@ $ sudo usermod -aG docker $USER ### 3.4.7 测试 Docker 是否安装正确 -运行以下命令: - ```bash $ docker run --rm hello-world diff --git a/03_install/3.5_raspberry-pi.md b/03_install/3.5_raspberry-pi.md index 317b004ed..184d8251a 100644 --- a/03_install/3.5_raspberry-pi.md +++ b/03_install/3.5_raspberry-pi.md @@ -133,8 +133,6 @@ $ sudo sh get-docker.sh --mirror Aliyun ### 3.5.4 启动 Docker -运行以下命令: - ```bash $ sudo systemctl enable docker $ sudo systemctl start docker @@ -160,8 +158,6 @@ $ sudo usermod -aG docker $USER ### 3.5.6 测试 Docker 是否安装正确 -运行以下命令: - ```bash $ docker run --rm hello-world diff --git a/03_install/3.6_offline.md b/03_install/3.6_offline.md index 20d757bf6..eab52c109 100644 --- a/03_install/3.6_offline.md +++ b/03_install/3.6_offline.md @@ -10,8 +10,6 @@ ### 3.6.1 概述 -总体概述了以下内容。 - ### 3.6.2 CentOS/Rocky/AlmaLinux 离线安装 Docker 在无法连接外网的安全环境中,离线安装是唯一的选择。本节介绍如何在 RHEL 系发行版中进行离线安装。 @@ -24,8 +22,6 @@ ##### 查询可用的软件版本 -运行以下命令: - ```bash #下载清华的镜像源文件 wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo @@ -53,8 +49,6 @@ docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable ##### 下载到指定文件夹 -运行以下命令: - ```bash sudo yum install --downloadonly --downloaddir=/tmp/docker24_offline_install/ docker-ce-24.0.4-1.el7 docker-ce-cli-24.0.4-1.el7 ``` @@ -155,12 +149,8 @@ sudo yum versionlock delete all #### YUM 本地源服务器搭建安装 Docker -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ##### 挂载 ISO 镜像搭建本地 File 源 -运行以下命令: - ```bash ## 删除其他网络源 @@ -192,8 +182,6 @@ yum install createrepo -y ##### 根据本地文件搭建 BASE 网络源 -运行以下命令: - ```bash ## 安装apache 服务器 @@ -246,8 +234,6 @@ createrepo /var/www/html/docker-ce/ ##### YUM 客户端设置 (C...N) -运行以下命令: - ```bash rm -f /etc/yum.repos.d/* cat >/etc/yum.repos.d/local_files.repo<< EOF @@ -273,8 +259,6 @@ EOF ##### Docker 安装 (C...N) -运行以下命令: - ```bash sudo yum makecache fast sudo yum install docker-ce docker-ce-cli containerd.io diff --git a/03_install/3.7_mac.md b/03_install/3.7_mac.md index de7a24c48..18ecd2ee8 100644 --- a/03_install/3.7_mac.md +++ b/03_install/3.7_mac.md @@ -1,7 +1,5 @@ ## 3.7 macOS -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 3.7.1 系统要求 [Docker Desktop for Mac](https://docs.docker.com/docker-for-mac/) 要求系统最低为 macOS Sonora 14.0 或更高版本,建议升级到最新版本的 macOS。 diff --git a/03_install/README.md b/03_install/README.md index 5213d7691..d4a7f56cd 100644 --- a/03_install/README.md +++ b/03_install/README.md @@ -1,13 +1,9 @@ -# 第三章安装 Docker +# 第三章 安装 Docker Docker 分为 `stable` `test` 和 `nightly` 三个更新频道。 官方网站上有各种环境下的[安装指南](https://docs.docker.com/get-docker/),这里主要介绍 Docker 在 `Linux`、`Windows 10` 和 `macOS` 上的安装。 -## 概述 - -总体概述了以下内容。 - ## 详细安装指南 * [Ubuntu](3.1_ubuntu.md) diff --git a/04_image/4.1_pull.md b/04_image/4.1_pull.md index 19969430e..282121d26 100644 --- a/04_image/4.1_pull.md +++ b/04_image/4.1_pull.md @@ -31,8 +31,6 @@ Registry地址 用户名 仓库名 标签 #### 示例 -运行以下命令: - ```bash ## 完整格式 @@ -65,8 +63,6 @@ $ docker pull ghcr.io/username/myapp:v1.0 当我们执行 `docker pull` 命令时,Docker 会输出详细的下载进度。让我们以 `ubuntu:24.04` 为例来解析这些信息。 -运行以下命令: - ```bash $ docker pull ubuntu:24.04 24.04: Pulling from library/ubuntu @@ -80,8 +76,6 @@ docker.io/library/ubuntu:24.04 #### 输出解读 -相关信息如下表: - | 输出内容 | 说明 | |---------|------| | `Pulling from library/ubuntu` | 正在从官方 ubuntu 仓库拉取 | @@ -118,10 +112,6 @@ flowchart TD | `--platform` | 指定平台架构 | `docker pull --platform linux/arm64 nginx` | | `--quiet, -q` | 静默模式 | `docker pull -q nginx` | -#### 概述 - -总体概述了以下内容。 - #### 指定平台 在 Apple Silicon Mac 上拉取 x86 镜像: @@ -196,8 +186,6 @@ $ sudo systemctl restart docker # Linux #### 查看镜像摘要 -运行以下命令: - ```bash $ docker images --digests ubuntu REPOSITORY TAG DIGEST IMAGE ID @@ -228,8 +216,6 @@ $ docker pull ubuntu@sha256:4bc3ae6596938cb0d9e5ac51a1152ec9dcac2a1c50829c74abd9 #### Q:提示镜像不存在 -运行以下命令: - ```bash Error: pull access denied, repository does not exist ``` @@ -242,8 +228,6 @@ Error: pull access denied, repository does not exist #### Q:磁盘空间不足 -运行以下命令: - ```bash ## 清理未使用的镜像 diff --git a/04_image/4.2_list.md b/04_image/4.2_list.md index 62969b780..103a75b37 100644 --- a/04_image/4.2_list.md +++ b/04_image/4.2_list.md @@ -31,10 +31,6 @@ ubuntu noble 329ed837d508 3 days ago 78MB | **CREATED** | 创建时间 | | **SIZE** | 本地占用空间 | -#### 概述 - -总体概述了以下内容。 - #### 同一镜像多个标签 注意上面的 `ubuntu:24.04` 和 `ubuntu:noble` 拥有相同的 IMAGE ID——它们是同一个镜像的不同标签,只占用一份存储空间。 @@ -47,8 +43,6 @@ Docker 镜像的大小可能与我们通常理解的文件大小有所不同, #### 本地大小 vs Hub 显示大小 -相关信息如下表: - | 位置 | 显示大小 | 说明 | |------|---------|------| | Docker Hub | 29MB | 压缩后的网络传输大小 | @@ -70,8 +64,6 @@ ubuntu:24.04 nginx:latest redis:latest #### 查看实际空间占用 -运行以下命令: - ```bash $ docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE @@ -89,8 +81,6 @@ Build Cache 0 0 0B 0B #### 按仓库名过滤 -运行以下命令: - ```bash ## 列出所有 ubuntu 镜像 @@ -103,8 +93,6 @@ ubuntu 22.04 a1b2c3d4e5f6 72MB #### 按仓库名和标签过滤 -运行以下命令: - ```bash $ docker images ubuntu:24.04 REPOSITORY TAG IMAGE ID SIZE @@ -113,8 +101,6 @@ ubuntu 24.04 329ed837d508 78MB #### 使用过滤器 --filter -相关信息如下表: - | 过滤条件 | 说明 | 示例 | |---------|------|------| | `dangling=true` | 虚悬镜像 | `-f dangling=true` | @@ -160,8 +146,6 @@ REPOSITORY TAG IMAGE ID SIZE #### 处理虚悬镜像 -运行以下命令: - ```bash ## 列出虚悬镜像 @@ -178,14 +162,8 @@ $ docker image prune 除了虚悬镜像,`docker image ls` 默认列出的只是顶层镜像。还有一种镜像是为了加速镜像构建、重复利用资源而存在的中间层镜像。 -#### 概述 - -总体概述了以下内容。 - #### 查看所有镜像 (包含中间层) -运行以下命令: - ```bash $ docker images -a ``` @@ -202,8 +180,6 @@ $ docker images -a #### 只输出 ID -运行以下命令: - ```bash $ docker images -q 5f515359c7f8 @@ -225,16 +201,12 @@ $ docker rmi $(docker images -q redis) #### 显示完整 ID -运行以下命令: - ```bash $ docker images --no-trunc ``` #### 显示摘要 -运行以下命令: - ```bash $ docker images --digests REPOSITORY TAG DIGEST IMAGE ID @@ -264,8 +236,6 @@ ubuntu 24.04 78MB #### 可用模板字段 -相关信息如下表: - | 字段 | 说明 | |------|------| | `.ID` | 镜像 ID | @@ -280,8 +250,6 @@ ubuntu 24.04 78MB ### 4.2.8 常用命令组合 -运行以下命令: - ```bash ## 列出所有镜像及其大小,按大小排序(需要系统 sort 命令) diff --git a/04_image/4.3_rm.md b/04_image/4.3_rm.md index 1a3cefdd8..311fa4bec 100644 --- a/04_image/4.3_rm.md +++ b/04_image/4.3_rm.md @@ -27,8 +27,6 @@ $ docker image rm [选项] <镜像1> [<镜像2> ...] #### 使用短 ID 删除 -运行以下命令: - ```bash $ docker image ls REPOSITORY TAG IMAGE ID SIZE @@ -44,8 +42,6 @@ Deleted: sha256:501ad78535f0... #### 使用镜像名删除 -运行以下命令: - ```bash $ docker rmi redis:alpine Untagged: redis:alpine @@ -87,8 +83,6 @@ Deleted: sha256:32770d1dcf835f192cafd6b9263b7b597a1778a403a109e2cc2ee866f74adf23 #### Untagged vs Deleted -相关信息如下表: - | 操作 | 含义 | |------|------| | **Untagged** | 移除镜像的标签 | @@ -146,8 +140,6 @@ $ docker image prune -f #### 删除所有未使用的镜像 -运行以下命令: - ```bash ## 删除所有没有被容器使用的镜像 @@ -160,8 +152,6 @@ $ docker image prune -a --filter "until=24h" #### 按条件删除 -运行以下命令: - ```bash ## 删除所有 redis 镜像 @@ -184,8 +174,6 @@ $ docker image prune -a --filter "until=168h" # 7天前 #### 原因一:有容器依赖 -运行以下命令: - ```bash $ docker rmi nginx Error: conflict: unable to remove repository reference "nginx" @@ -207,8 +195,6 @@ $ docker rmi -f nginx #### 原因二:多个标签指向同一镜像 -运行以下命令: - ```bash $ docker images REPOSITORY TAG IMAGE ID @@ -225,8 +211,6 @@ Untagged: ubuntu:24.04 #### 原因三:被其他镜像依赖 (中间层) -运行以下命令: - ```bash $ docker rmi some_base_image Error: image has dependent child images @@ -238,8 +222,6 @@ Error: image has dependent child images ### 4.3.6 常用过滤条件 -相关信息如下表: - | 过滤条件 | 说明 | 示例 | |---------|------|------| | `dangling=true` | 虚悬镜像 | `-f dangling=true` | @@ -256,8 +238,6 @@ Error: image has dependent child images #### 开发环境 -运行以下命令: - ```bash ## 定期清理虚悬镜像 @@ -270,8 +250,6 @@ $ docker system prune -a #### CI/CD 环境 -运行以下命令: - ```bash ## 只保留最近使用的镜像 @@ -280,8 +258,6 @@ $ docker image prune -a --filter "until=72h" -f #### 查看空间占用 -运行以下命令: - ```bash $ docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE diff --git a/04_image/4.4_commit.md b/04_image/4.4_commit.md index 75aa2996b..d4598fe16 100644 --- a/04_image/4.4_commit.md +++ b/04_image/4.4_commit.md @@ -122,8 +122,6 @@ docker run --name web2 -d -p 81:80 nginx:v2 ### 4.4.1 概述 -总体概述了以下内容。 - ### 4.4.2 慎用 `docker commit` 使用 `docker commit` 命令虽然可以比较直观的帮助理解镜像分层存储的概念,但是实际环境中并不会这样使用。 diff --git a/04_image/4.5_build.md b/04_image/4.5_build.md index 00e514817..f10fa9400 100644 --- a/04_image/4.5_build.md +++ b/04_image/4.5_build.md @@ -146,8 +146,6 @@ Sending build context to Docker daemon 2.048 kB ### 4.5.7 其它 `docker build` 的用法 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 直接用 Git repo 进行构建 或许你已经注意到了,`docker build` 还支持从 URL 构建,比如可以直接从 Git repo 中构建: @@ -174,8 +172,6 @@ Successfully built 038ad4142d2b #### 用给定的 tar 压缩包构建 -运行以下命令: - ```bash $ docker build http://server/context.tar.gz ``` @@ -184,8 +180,6 @@ $ docker build http://server/context.tar.gz #### 从标准输入中读取 Dockerfile 进行构建 -运行以下命令: - ```bash docker build - < Dockerfile ``` @@ -200,8 +194,6 @@ cat Dockerfile | docker build - #### 从标准输入中读取上下文压缩包进行构建 -运行以下命令: - ```bash $ docker build - < context.tar.gz ``` diff --git a/04_image/4.6_other.md b/04_image/4.6_other.md index 813a8a2ee..6fc488537 100644 --- a/04_image/4.6_other.md +++ b/04_image/4.6_other.md @@ -41,10 +41,6 @@ f477a6e18e98 About a minute ago 214.9 MB Docker 还提供了 `docker save` 和 `docker load` 命令,用以将镜像保存为一个文件,然后传输到另一个位置上,再加载进来。这是在没有 Docker Registry 时的做法,现在已经不推荐,镜像迁移应该直接使用 Docker Registry,无论是直接使用 Docker Hub 还是使用内网私有 Registry 都可以。 -#### 概述 - -总体概述了以下内容。 - #### 保存镜像 使用 `docker save` 命令可以将镜像保存为归档文件。 diff --git a/04_image/README.md b/04_image/README.md index b60638458..171a145c0 100644 --- a/04_image/README.md +++ b/04_image/README.md @@ -1,13 +1,9 @@ -# 第四章使用镜像 +# 第四章 使用镜像 在之前的介绍中,我们知道镜像是 Docker 的三大组件之一。 Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。 -## 概述 - -总体概述了以下内容。 - ## 本章内容 本章将介绍更多关于镜像的内容,包括: diff --git a/04_image/summary.md b/04_image/summary.md index cd2d7cd95..4d433fbb8 100644 --- a/04_image/summary.md +++ b/04_image/summary.md @@ -1,7 +1,5 @@ ## 4.8 本章小结 -相关信息如下表: - | 操作 | 命令 | |------|------| | 拉取镜像 | `docker pull 镜像名:标签` | @@ -16,8 +14,6 @@ - [镜像加速器](../03_install/3.9_mirror.md):加速镜像下载 - [Docker Hub](../06_repository/6.1_dockerhub.md):官方镜像仓库 -相关信息如下表: - | 操作 | 命令 | |------|------| | 列出所有镜像 | `docker images` | @@ -34,8 +30,6 @@ - [删除镜像](4.3_rm.md):清理本地镜像 - [镜像](../02_basic_concept/2.1_image.md):理解镜像概念 -相关信息如下表: - | 操作 | 命令 | |------|------| | 删除指定镜像 | `docker rmi 镜像名:标签` | diff --git a/05_container/5.1_run.md b/05_container/5.1_run.md index 6753c6e98..602bd66dd 100644 --- a/05_container/5.1_run.md +++ b/05_container/5.1_run.md @@ -13,12 +13,8 @@ ### 5.1.2 新建并启动 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 基本语法 -运行以下命令: - ```bash docker run [选项] 镜像 [命令] [参数...] ``` @@ -84,12 +80,8 @@ flowchart TD ### 5.1.4 常用启动选项 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 基础选项 -相关信息如下表: - | 选项 | 说明 | 示例 | |------|------|------| | `-d` | 后台运行 (detach)| `docker run -d nginx` | @@ -99,8 +91,6 @@ flowchart TD #### 端口映射 -运行以下命令: - ```bash ## 将容器的 80 端口映射到宿主机的 8080 端口 @@ -117,8 +107,6 @@ $ docker run -d -p 127.0.0.1:8080:80 nginx #### 数据卷挂载 -运行以下命令: - ```bash ## 挂载命名卷 @@ -135,8 +123,6 @@ $ docker run -v /host/path:/container/path:ro nginx #### 环境变量 -运行以下命令: - ```bash ## 设置单个环境变量 @@ -149,8 +135,6 @@ $ docker run --env-file .env myapp #### 资源限制 -运行以下命令: - ```bash ## 限制内存 @@ -198,8 +182,6 @@ root@ba267838cc1b:/# ps ### 5.1.7 常见问题 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Q:容器启动后立即退出 **原因**:主进程执行完毕或无法保持运行 diff --git a/05_container/5.2_daemon.md b/05_container/5.2_daemon.md index bf25cfa94..909ff3f74 100644 --- a/05_container/5.2_daemon.md +++ b/05_container/5.2_daemon.md @@ -13,12 +13,8 @@ Docker 容器默认是 **前台运行** 的。使用 `-d` (detach) 参数可以 ### 5.2.2 基本使用 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 前台运行 (默认) -运行以下命令: - ```bash $ docker run ubuntu:24.04 /bin/sh -c "while true; do echo hello world; sleep 1; done" hello world @@ -35,8 +31,6 @@ hello world #### 后台运行 (使用 -d 参数) -运行以下命令: - ```bash $ docker run -d ubuntu:24.04 /bin/sh -c "while true; do echo hello world; sleep 1; done" 77b2dc01fe0f3f1265df143181e7b9af5e05279a884f4776ee75350ea9d8017a @@ -89,8 +83,6 @@ flowchart TD #### 常见的 “立即退出” 场景 -相关信息如下表: - | 场景 | 原因 | 解决方案 | |------|------|---------| | `docker run -d ubuntu` | 默认 bash 无输入立即退出 | 指定长期运行的命令 | @@ -99,12 +91,8 @@ flowchart TD ### 5.2.4 查看后台容器 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 查看运行中的容器 -运行以下命令: - ```bash $ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES @@ -113,8 +101,6 @@ CONTAINER ID IMAGE COMMAND CREATED STATUS PO #### 查看容器输出日志 -运行以下命令: - ```bash $ docker container logs 77b2dc01fe0f hello world @@ -131,8 +117,6 @@ $ docker container logs -f 77b2dc01fe0f #### 查看已停止的容器 -运行以下命令: - ```bash $ docker container ls -a ``` @@ -141,12 +125,8 @@ $ docker container ls -a ### 5.2.5 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 长期运行的服务使用 -d -运行以下命令: - ```bash ## Web 服务器 @@ -185,8 +165,6 @@ Hello, World! #### 4. 配合日志查看 -运行以下命令: - ```bash ## 后台启动 @@ -207,8 +185,6 @@ $ docker logs -t myapp ### 5.2.6 常见问题排查 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Q:容器启动后立即退出 1. **查看退出状态码**: diff --git a/05_container/5.3_stop.md b/05_container/5.3_stop.md index a049e0fa8..a52a82168 100644 --- a/05_container/5.3_stop.md +++ b/05_container/5.3_stop.md @@ -16,20 +16,14 @@ ### 5.3.2 docker stop (推荐) -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### docker stop 基本用法 -运行以下命令: - ```bash $ docker stop 容器名或ID ``` #### 工作原理 -具体内容如下: - ```mermaid flowchart TD cmd["docker stop mycontainer"] --> A["1. 发送 SIGTERM 信号给容器主进程 (PID 1)"] @@ -39,8 +33,6 @@ flowchart TD #### 自定义超时时间 -运行以下命令: - ```bash ## 等待 30 秒后强制终止 @@ -53,8 +45,6 @@ $ docker stop -t 0 mycontainer #### 停止多个容器 -运行以下命令: - ```bash ## 停止多个指定容器 @@ -69,20 +59,14 @@ $ docker stop $(docker ps -q) ### 5.3.3 docker kill -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 基本用法 -运行以下命令: - ```bash $ docker kill 容器名或ID ``` #### 与 stop 的区别 -相关信息如下表: - | 命令 | 信号 | 使用场景 | |------|------|---------| | `docker stop` | SIGTERM → SIGKILL | 正常停止,让应用优雅退出 | @@ -90,8 +74,6 @@ $ docker kill 容器名或ID #### 发送自定义信号 -运行以下命令: - ```bash ## 发送 SIGHUP(让进程重新加载配置) @@ -123,8 +105,6 @@ $ docker run ubuntu echo "Hello" # echo 执行完 → 容器停止 ### 5.3.5 查看已停止的容器 -运行以下命令: - ```bash $ docker ps -a CONTAINER ID IMAGE COMMAND STATUS NAMES @@ -146,12 +126,8 @@ c5d3a5e8f7b2 nginx "nginx" Up 5 minutes mynginx ### 5.3.6 重新启动容器 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 启动已停止的容器 -运行以下命令: - ```bash $ docker start 容器名或ID @@ -162,8 +138,6 @@ $ docker start -ai 容器名 #### 重启运行中的容器 -运行以下命令: - ```bash ## 先停止再启动 @@ -178,8 +152,6 @@ $ docker restart -t 30 容器名 ### 5.3.7 生命周期状态图 -具体内容如下: - ```mermaid stateDiagram-v2 direction TB @@ -200,28 +172,20 @@ stateDiagram-v2 ### 5.3.8 批量操作 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 停止所有容器 -运行以下命令: - ```bash $ docker stop $(docker ps -q) ``` #### 删除所有已停止的容器 -运行以下命令: - ```bash $ docker container prune ``` #### 停止并删除所有容器 -运行以下命令: - ```bash $ docker stop $(docker ps -q) && docker container prune -f ``` @@ -230,8 +194,6 @@ $ docker stop $(docker ps -q) && docker container prune -f ### 5.3.9 常见问题 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Q:容器停止很慢 原因:应用没有正确处理 SIGTERM 信号,需要等待超时后强制终止。 @@ -258,8 +220,6 @@ CMD ["node", "server.js"] #### Q:容器无法停止 -运行以下命令: - ```bash ## 强制终止 diff --git a/05_container/5.4_attach_exec.md b/05_container/5.4_attach_exec.md index 061745a29..b2fe77d2d 100644 --- a/05_container/5.4_attach_exec.md +++ b/05_container/5.4_attach_exec.md @@ -1,7 +1,5 @@ ## 5.4 进入容器 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 5.4.1 为什么需要进入容器 使用 `-d` 参数启动容器后,容器在后台运行。以下场景需要进入容器内部操作: @@ -26,12 +24,8 @@ Docker 提供两种进入容器的命令: ### 5.4.3 docker exec (推荐) -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### docker exec 基本用法 -运行以下命令: - ```bash ## 进入容器并启动交互式 shell @@ -44,8 +38,6 @@ $ docker exec -it 容器名 /bin/sh #### 参数说明 -相关信息如下表: - | 参数 | 作用 | |------|------| | `-i` | 保持标准输入打开 (interactive)| @@ -57,8 +49,6 @@ $ docker exec -it 容器名 /bin/sh #### docker exec 示例 -运行以下命令: - ```bash ## 启动一个后台容器 @@ -99,8 +89,6 @@ $ docker exec -u root myubuntu apt update #### 只用 -i 不用 -t 的区别 -运行以下命令: - ```bash ## 只用 -i:可以执行命令,但没有提示符 @@ -123,12 +111,8 @@ root@69d137adef7a:/# # 有提示符 ### 5.4.4 docker attach (谨慎使用) -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### docker attach 基本用法 -运行以下命令: - ```bash $ docker attach 容器名 ``` @@ -150,8 +134,6 @@ flowchart LR #### docker attach 示例 -运行以下命令: - ```bash ## 启动容器 @@ -199,8 +181,6 @@ CONTAINER ID IMAGE STATUS NAMES ### 5.4.5 exec vs attach 对比 -相关信息如下表: - | 特性 | docker exec | docker attach | |------|-------------|---------------| | **工作方式** | 在容器内启动新进程 | 附加到主进程 | @@ -238,12 +218,8 @@ flowchart LR ### 5.4.6 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 首选 docker exec -运行以下命令: - ```bash ## 进入容器调试 @@ -285,8 +261,6 @@ $ docker debug myapp ### 5.4.7 常见问题 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Q:exec 进入后看不到其他终端的操作 这是正常的。exec 启动的是独立进程,多个 exec 会话互不影响。 @@ -301,8 +275,6 @@ $ docker exec -it myapp /bin/sh #### Q:需要 root 权限 -运行以下命令: - ```bash $ docker exec -u root -it myapp bash ``` diff --git a/05_container/5.6_rm.md b/05_container/5.6_rm.md index b8adf2fde..7d4e2b989 100644 --- a/05_container/5.6_rm.md +++ b/05_container/5.6_rm.md @@ -16,8 +16,6 @@ $ docker rm 容器名或ID ### 5.6.2 删除选项 -相关信息如下表: - | 选项 | 说明 | 示例 | |------|------|------| | 无参数 | 删除已停止的容器 | `docker rm mycontainer` | @@ -26,8 +24,6 @@ $ docker rm 容器名或ID #### 删除已停止的容器 -运行以下命令: - ```bash $ docker rm mycontainer mycontainer @@ -35,8 +31,6 @@ mycontainer #### 强制删除运行中的容器 -运行以下命令: - ```bash ## 不加 -f 会报错 @@ -53,8 +47,6 @@ running_container #### 删除容器及其数据卷 -运行以下命令: - ```bash ## 删除容器时同时删除其匿名卷 @@ -67,12 +59,8 @@ $ docker rm -v mycontainer ### 5.6.3 批量删除 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 删除所有已停止的容器 -运行以下命令: - ```bash ## 方式一:使用 prune 命令(推荐) @@ -92,8 +80,6 @@ $ docker container prune -f #### 删除所有容器 (包括运行中的) -运行以下命令: - ```bash ## 先停止所有容器,再删除 @@ -107,8 +93,6 @@ $ docker rm -f $(docker ps -aq) #### 按条件删除 -运行以下命令: - ```bash ## 删除所有已退出的容器 @@ -138,14 +122,8 @@ $ docker container prune --filter "until=24h" | `before=xxx` | 在某容器之前创建 | `-f before=mycontainer` | | `since=xxx` | 在某容器之后创建 | `-f since=mycontainer` | -#### 概述 - -总体概述了以下内容。 - #### 示例 -运行以下命令: - ```bash ## 删除所有基于 nginx 镜像的容器 @@ -178,12 +156,8 @@ $ docker image rm nginx ### 5.6.6 清理策略建议 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 开发环境 -运行以下命令: - ```bash ## 定期清理已停止的容器 @@ -196,8 +170,6 @@ $ docker system prune -f #### 生产环境 -运行以下命令: - ```bash ## 使用 --rm 参数运行临时容器 @@ -211,8 +183,6 @@ $ docker container prune --filter "until=168h" # 保留 7 天内的 #### 完整清理脚本 -运行以下命令: - ```bash #!/bin/bash ## cleanup.sh - Docker 资源清理脚本 @@ -237,12 +207,8 @@ docker system df ### 5.6.7 常见问题 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Q:容器无法删除 -运行以下命令: - ```bash Error: container is running ``` diff --git a/05_container/README.md b/05_container/README.md index cade17faf..343ea0bc8 100644 --- a/05_container/README.md +++ b/05_container/README.md @@ -1,4 +1,4 @@ -# 第五章操作容器 +# 第五章 操作容器 容器是 Docker 又一核心概念。 @@ -6,7 +6,7 @@ 本章将具体介绍如何来管理一个容器,包括创建、启动和停止等。 -* [启动容器](../05_container/5.1_run.md) +* [启动容器](5.1_run.md) * [守护态运行](5.2_daemon.md) * [终止容器](5.3_stop.md) * [进入容器](5.4_attach_exec.md) diff --git a/05_container/summary.md b/05_container/summary.md index d9980538b..750f734a4 100644 --- a/05_container/summary.md +++ b/05_container/summary.md @@ -1,7 +1,5 @@ ## 5.7 本章小结 -相关信息如下表: - | 操作 | 命令 | 说明 | |------|------|------| | 新建并运行 | `docker run` | 最常用的启动方式 | diff --git a/06_repository/6.1_dockerhub.md b/06_repository/6.1_dockerhub.md index de199c1ee..5abc1af7f 100644 --- a/06_repository/6.1_dockerhub.md +++ b/06_repository/6.1_dockerhub.md @@ -1,7 +1,5 @@ ## 6.1 Docker Hub -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 6.1.1 什么是 Docker Hub Docker Hub 是 Docker 的中央镜像仓库,通过它您可以轻松地分享和获取 Docker 镜像。 @@ -20,8 +18,6 @@ Docker Hub 是 Docker 的中央镜像仓库,通过它您可以轻松地分享 ### 6.1.2 核心功能 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 搜索镜像 我们可以通过 `docker search` 命令来查找官方仓库中的镜像,并利用 `docker pull` 命令来将它下载到本地。 @@ -39,8 +35,6 @@ centos The official build of CentOS. 7000+ [OK] #### 2. 拉取镜像 -运行以下命令: - ```bash $ docker pull nginx:alpine ``` @@ -72,12 +66,6 @@ $ docker push username/myapp:v1 ### 6.1.3 限制与配额 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - -#### 概述 - -总体概述了以下内容。 - #### 镜像拉取限制 自 2020 年 11 月起,Docker Hub 对匿名和免费用户实施了拉取速率限制: @@ -97,8 +85,6 @@ $ docker push username/myapp:v1 ### 6.1.4 安全最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 启用 2FA (双因素认证) 为了保护您的 Docker Hub 账号安全,我们建议采取以下措施。 diff --git a/06_repository/6.2_registry.md b/06_repository/6.2_registry.md index 2f398d165..4c5717d56 100644 --- a/06_repository/6.2_registry.md +++ b/06_repository/6.2_registry.md @@ -8,12 +8,6 @@ ### 6.2.1 安装运行 docker-registry -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - -#### 概述 - -总体概述了以下内容。 - #### 容器运行 如果您需要搭建私有仓库,可以通过官方提供的 `registry` 镜像快速部署。 @@ -105,10 +99,6 @@ REPOSITORY TAG IMAGE ID CREAT 这是因为 Docker 默认不允许非 `HTTPS` 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制,或者查看下一节配置能够通过 `HTTPS` 访问的私有仓库。 -#### 概述 - -总体概述了以下内容。 - #### Linux 默认情况下,Docker 强制使用 HTTPS 协议推送镜像。如果您搭建的私有仓库是 HTTP 协议,需要进行如下配置。 diff --git a/06_repository/6.3_registry_auth.md b/06_repository/6.3_registry_auth.md index 53154163e..2504163a0 100644 --- a/06_repository/6.3_registry_auth.md +++ b/06_repository/6.3_registry_auth.md @@ -125,8 +125,6 @@ threshold: 3 ### 6.3.3 生成 http 认证文件 -运行以下命令: - ```bash $ mkdir auth @@ -166,8 +164,6 @@ volumes: ### 6.3.6 启动 -运行以下命令: - ```bash $ docker compose up -d ``` diff --git a/06_repository/6.4_nexus3_registry.md b/06_repository/6.4_nexus3_registry.md index 15637be8c..c6de5caa8 100644 --- a/06_repository/6.4_nexus3_registry.md +++ b/06_repository/6.4_nexus3_registry.md @@ -4,8 +4,6 @@ ### 6.4.1 启动 Nexus 容器 -运行以下命令: - ```bash $ docker run -d --name nexus3 --restart=always \ -p 8081:8081 \ diff --git a/06_repository/README.md b/06_repository/README.md index e07a8bb41..f18fd99f1 100644 --- a/06_repository/README.md +++ b/06_repository/README.md @@ -1,4 +1,4 @@ -# 第六章访问仓库 +# 第六章 访问仓库 仓库 (`Repository`) 是集中存放镜像的地方。 diff --git a/06_repository/summary.md b/06_repository/summary.md index e933330f4..fa00f0552 100644 --- a/06_repository/summary.md +++ b/06_repository/summary.md @@ -1,7 +1,5 @@ ## 6.5 本章小结 -相关信息如下表: - | 功能 | 说明 | |------|------| | **官方镜像** | 优先使用的基础镜像 | @@ -11,8 +9,6 @@ ### 6.5.1 概述 -总体概述了以下内容。 - ### 6.5.2 延伸阅读 - [私有仓库](6.2_registry.md):搭建自己的 Registry diff --git a/07_dockerfile/7.10_workdir.md b/07_dockerfile/7.10_workdir.md index 78381dcd7..99b7fc869 100644 --- a/07_dockerfile/7.10_workdir.md +++ b/07_dockerfile/7.10_workdir.md @@ -1,7 +1,5 @@ ## 7.10 WORKDIR 指定工作目录 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.10.1 基本语法 如下代码块所示,展示了相关示例: @@ -30,8 +28,6 @@ COPY . . # 复制到 /app/ ### 7.10.3 为什么需要 WORKDIR -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 常见错误 如下代码块所示,展示了相关示例: @@ -125,8 +121,6 @@ COPY --from=builder /build/dist . ### 7.10.7 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 尽早设置 WORKDIR 如下代码块所示,展示了相关示例: @@ -188,8 +182,6 @@ WORKDIR /data ### 7.10.8 与其他指令的关系 -相关信息如下表: - | 指令 | WORKDIR 的影响 | |------|---------------| | `RUN` | 在 WORKDIR 中执行命令 | diff --git a/07_dockerfile/7.11_user.md b/07_dockerfile/7.11_user.md index 0efa976f8..37a847661 100644 --- a/07_dockerfile/7.11_user.md +++ b/07_dockerfile/7.11_user.md @@ -1,7 +1,5 @@ ## 7.11 USER 指定当前用户 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.11.1 基本语法 如下代码块所示,展示了相关示例: @@ -38,8 +36,6 @@ flowchart LR ### 7.11.3 基本用法 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 创建并切换用户 如下代码块所示,展示了相关示例: @@ -94,10 +90,6 @@ RUN useradd -r -s /bin/false appuser USER appuser ``` -#### 概述 - -总体概述了以下内容。 - #### 创建用户的方式 **Debian/Ubuntu**: @@ -126,8 +118,6 @@ RUN addgroup -g 1001 -S appgroup && \ ### 7.11.5 运行时切换用户 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 使用 gosu (推荐) 在 ENTRYPOINT 脚本中切换用户时,不要使用 `su` 或 `sudo`,应使用 [gosu](https://github.com/tianon/gosu): @@ -165,8 +155,6 @@ exec gosu redis "$@" #### 为什么不用 su/sudo -相关信息如下表: - | 问题 | su/sudo | gosu | |------|---------|------| | TTY 要求 | 需要 | 不需要 | @@ -223,8 +211,6 @@ CMD ["node", "server.js"] ### 7.11.8 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 始终使用非 root 用户 如下代码块所示,展示了相关示例: @@ -279,12 +265,8 @@ CMD ["node", "server.js"] ### 7.11.9 常见问题 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Q:权限被拒绝 -运行以下命令: - ```bash permission denied: '/app/data.log' ``` diff --git a/07_dockerfile/7.12_healthcheck.md b/07_dockerfile/7.12_healthcheck.md index 3d9116211..1678e5515 100644 --- a/07_dockerfile/7.12_healthcheck.md +++ b/07_dockerfile/7.12_healthcheck.md @@ -1,7 +1,5 @@ ## 7.12 HEALTHCHECK 健康检查 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.12.1 基本语法 如下代码块所示,展示了相关示例: @@ -37,8 +35,6 @@ Starting ──成功──> Healthy ──失败N次──> Unhealthy ### 7.12.3 基本用法 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Web 服务检查 如下代码块所示,展示了相关示例: @@ -59,8 +55,6 @@ HEALTHCHECK --interval=30s --timeout=3s --retries=3 \ #### 常用选项 -相关信息如下表: - | 选项 | 说明 | 默认值 | |------|------|--------| | `--interval` | 两次检查的间隔 | 30s | @@ -83,8 +77,6 @@ HEALTHCHECK NONE ### 7.12.5 常见检查脚本 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### HTTP 服务 使用 `curl` 或 `wget`: @@ -158,8 +150,6 @@ services: ### 7.12.7 查看健康状态 -运行以下命令: - ```bash ## 查看容器状态(包含健康信息) @@ -189,8 +179,6 @@ $ docker inspect --format '{{json .State.Health}}' mycontainer | jq ### 7.12.8 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 避免副作用 健康检查会被频繁执行,不要在检查脚本中进行写操作或消耗大量资源的操作。 diff --git a/07_dockerfile/7.13_onbuild.md b/07_dockerfile/7.13_onbuild.md index b7620ed35..0027e2a37 100644 --- a/07_dockerfile/7.13_onbuild.md +++ b/07_dockerfile/7.13_onbuild.md @@ -1,7 +1,5 @@ ## 7.13 ONBUILD 为他人做嫁衣裳 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.13.1 基本语法 如下代码块所示,展示了相关示例: @@ -77,8 +75,6 @@ FROM 基础镜像 ──build──> 读取基础镜像触发器 ──> 执行 ### 7.13.4 常见使用场景 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 自动处理依赖安装 如下代码块所示,展示了相关示例: @@ -115,8 +111,6 @@ ONBUILD COPY dist/ /usr/share/nginx/html/ ### 7.13.5 注意事项 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 继承性限制 `ONBUILD` 指令 **只会继承一次**。 @@ -141,8 +135,6 @@ ONBUILD COPY dist/ /usr/share/nginx/html/ ### 7.13.6 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 命名规范 建议在镜像标签中添加 `-onbuild` 后缀,明确告知使用者该镜像包含触发器。 diff --git a/07_dockerfile/7.14_label.md b/07_dockerfile/7.14_label.md index 4aff85340..a0ed6921e 100644 --- a/07_dockerfile/7.14_label.md +++ b/07_dockerfile/7.14_label.md @@ -1,7 +1,5 @@ ## 7.14 LABEL 为镜像添加元数据 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.14.1 基本语法 如下代码块所示,展示了相关示例: @@ -25,8 +23,6 @@ LABEL = = ... ### 7.14.3 基本用法 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 定义单个标签 如下代码块所示,展示了相关示例: @@ -67,10 +63,6 @@ LABEL maintainer="user@example.com" \ | `org.opencontainers.image.title` | 镜像标题 | `My App` | | `org.opencontainers.image.description` | 描述 | `Production ready web server` | -#### 概述 - -总体概述了以下内容。 - #### 示例 如下代码块所示,展示了相关示例: @@ -132,8 +124,6 @@ $ docker build \ ### 7.14.7 查看标签 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### docker inspect 查看镜像的标签信息: diff --git a/07_dockerfile/7.15_shell.md b/07_dockerfile/7.15_shell.md index 5ca0e0548..51142ace0 100644 --- a/07_dockerfile/7.15_shell.md +++ b/07_dockerfile/7.15_shell.md @@ -1,7 +1,5 @@ ## 7.15 SHELL 指令 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.15.1 基本语法 如下代码块所示,展示了相关示例: @@ -21,8 +19,6 @@ SHELL ["executable", "parameters"] ### 7.15.2 为什么要用 SHELL 指令 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 使用 bash 特性 默认的 `/bin/sh` (通常是 dash 或 alpine 的 ash) 功能有限。如果你需要使用 bash 的特有功能 (如数组、`{}` 扩展、`pipefail` 等),可以切换 shell。 @@ -125,8 +121,6 @@ RUN echo "Using sh again" ### 7.15.5 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 推荐开启 pipefail 对于使用 bash 的镜像,强烈建议开启 `pipefail`,以确保构建过程中的错误能被及时捕获。 diff --git a/07_dockerfile/7.1_run.md b/07_dockerfile/7.1_run.md index 8d08db4d2..595715418 100644 --- a/07_dockerfile/7.1_run.md +++ b/07_dockerfile/7.1_run.md @@ -1,7 +1,5 @@ ## 7.1 RUN 执行命令 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.1.1 基本语法 如下代码块所示,展示了相关示例: @@ -17,8 +15,6 @@ RUN ["executable", "param1", "param2"] ### 7.1.2 两种格式对比 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. Shell 格式 如下代码块所示,展示了相关示例: @@ -50,8 +46,6 @@ RUN ["apt-get", "update"] ### 7.1.3 常见最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 组合命令 (减少层数) 每一个 `RUN` 指令都会新建一层镜像。为了减少镜像体积和层数,应使用 `&&` 连接命令。 @@ -110,8 +104,6 @@ RUN wget http://url | gzip -d > file ### 7.1.4 常见问题 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Q:为什么 `RUN cd /app` 不生效? 如下代码块所示,展示了相关示例: @@ -148,8 +140,6 @@ RUN echo $MY_VAR ### 7.1.5 高级技巧 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 使用 BuildKit 的挂载缓存 BuildKit 支持在 `RUN` 指令中使用 `--mount` 挂载缓存,加速构建。 diff --git a/07_dockerfile/7.2_copy.md b/07_dockerfile/7.2_copy.md index f92441fec..11561de0b 100644 --- a/07_dockerfile/7.2_copy.md +++ b/07_dockerfile/7.2_copy.md @@ -1,7 +1,5 @@ ## 7.2 COPY 复制文件 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.2.1 基本语法 如下代码块所示,展示了相关示例: @@ -17,8 +15,6 @@ COPY [选项] ["<源路径1>", "<源路径2>", ... "<目标路径>"] ### 7.2.2 基本用法 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 复制单个文件 如下代码块所示,展示了相关示例: @@ -90,8 +86,6 @@ COPY app[0-9].js /app/ # app0.js ~ app9.js ### 7.2.4 目标路径 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 绝对路径 如下代码块所示,展示了相关示例: @@ -163,8 +157,6 @@ COPY start.sh /app/ ### 7.2.7 COPY vs ADD -相关信息如下表: - | 特性 | COPY | ADD | |------|------|-----| | 复制本地文件 | ✅ | ✅ | @@ -189,8 +181,6 @@ ADD app.tar.gz /app/ ### 7.2.8 多阶段构建中的 COPY -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 从其他构建阶段复制 如下代码块所示,展示了相关示例: @@ -254,8 +244,6 @@ Dockerfile ### 7.2.10 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 利用缓存,先复制依赖文件 如下代码块所示,展示了相关示例: diff --git a/07_dockerfile/7.3_add.md b/07_dockerfile/7.3_add.md index e794c8d37..b571bcaf3 100644 --- a/07_dockerfile/7.3_add.md +++ b/07_dockerfile/7.3_add.md @@ -1,7 +1,5 @@ ## 7.3 ADD 更高级的复制文件 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.3.1 基本语法 如下代码块所示,展示了相关示例: @@ -20,8 +18,6 @@ ADD [选项] ["<源路径>", ... "<目标路径>"] ### 7.3.2 ADD vs COPY -相关信息如下表: - | 特性 | COPY | ADD | |------|------|-----| | 复制本地文件 | ✅ | ✅ | @@ -36,8 +32,6 @@ ADD [选项] ["<源路径>", ... "<目标路径>"] ### 7.3.3 自动解压功能 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 基本用法 (自动解压本地 tar) 如下代码块所示,展示了相关示例: @@ -85,8 +79,6 @@ app.tar.gz 包含: /app/ 目录结果: ### 7.3.4 URL 下载功能 (不推荐) -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 基本用法 如下代码块所示,展示了相关示例: @@ -99,8 +91,6 @@ ADD https://example.com/app.zip /app/app.zip #### 为什么不推荐 -相关信息如下表: - | 问题 | 说明 | |------|------| | 权限固定 | 下载的文件权限为 600,通常需要额外 RUN 修改 | @@ -144,8 +134,6 @@ ADD --chown=1000:1000 files/ /app/ ### 7.3.6 何时使用 ADD -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### ✅ 适合使用 ADD 如下代码块所示,展示了相关示例: @@ -212,8 +200,6 @@ ADD app.tar.gz /app/ ### 7.3.8 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 默认使用 COPY 如下代码块所示,展示了相关示例: diff --git a/07_dockerfile/7.4_cmd.md b/07_dockerfile/7.4_cmd.md index c7934c20d..b5207f771 100644 --- a/07_dockerfile/7.4_cmd.md +++ b/07_dockerfile/7.4_cmd.md @@ -1,7 +1,5 @@ ## 7.4 CMD 容器启动命令 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.4.1 什么是 CMD `CMD` 指令用于指定容器启动时默认执行的命令。它定义了容器的 “主进程”。 @@ -63,8 +61,6 @@ CMD ["sh", "-c", "echo $HOME"] ### 7.4.3 exec 格式 vs shell 格式 -相关信息如下表: - | 特性 | exec 格式 | shell 格式 | |------|----------|-----------| | 主进程 | 指定的程序 | `/bin/sh` | @@ -72,10 +68,6 @@ CMD ["sh", "-c", "echo $HOME"] | 环境变量 | ❌ 需要 shell 包装 | ✅ 自动解析 | | 推荐使用 | ✅ 大多数场景 | 需要 shell 特性时 | -#### 概述 - -总体概述了以下内容。 - #### 信号传递问题示例 如下代码块所示,展示了相关示例: @@ -122,8 +114,6 @@ CMD ["/bin/bash"] + cat /etc/os-release ### 7.4.5 经典错误:容器立即退出 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 错误示例 如下代码块所示,展示了相关示例: @@ -166,8 +156,6 @@ CMD ["nginx", "-g", "daemon off;"] ### 7.4.6 CMD vs ENTRYPOINT -相关信息如下表: - | 指令 | 用途 | 运行时行为 | |------|------|-----------| | **CMD**| 默认命令 | `docker run` 参数会 **覆盖** 它 | @@ -210,8 +198,6 @@ $ docker run myimage http://other.com # curl -s http://other.com(参数覆盖 ### 7.4.7 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 优先使用 exec 格式 如下代码块所示,展示了相关示例: @@ -278,8 +264,6 @@ $ docker run myapp --port 9000 ### 7.4.8 常见问题 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Q:CMD 可以写多个吗? 不可以。多个 CMD 只有最后一个生效: diff --git a/07_dockerfile/7.5_entrypoint.md b/07_dockerfile/7.5_entrypoint.md index a82cf2d1f..8daba0fc8 100644 --- a/07_dockerfile/7.5_entrypoint.md +++ b/07_dockerfile/7.5_entrypoint.md @@ -1,7 +1,5 @@ ## 7.5 ENTRYPOINT 入口点 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.5.1 什么是 ENTRYPOINT `ENTRYPOINT` 指定容器启动时运行的入口程序。与 CMD 不同,ENTRYPOINT 定义的命令不会被 `docker run` 的参数覆盖,而是 **接收这些参数**。 @@ -12,8 +10,6 @@ ### 7.5.2 语法格式 -相关信息如下表: - | 格式 | 语法 | 推荐程度 | |------|------|---------| | **exec 格式**| `ENTRYPOINT ["可执行文件", "参数1"]` | ✅**推荐** | @@ -33,12 +29,8 @@ ENTRYPOINT nginx -g "daemon off;" ### 7.5.3 ENTRYPOINT vs CMD -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 核心区别 -相关信息如下表: - | 特性 | ENTRYPOINT | CMD | |------|------------|-----| | **定位** | 固定的入口程序 | 默认参数 | @@ -90,8 +82,6 @@ $ docker run myimage -v http://other.com # curl -s -v http://other.com ✓ ### 7.5.4 场景一:让镜像像命令一样使用 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 需求 (启动前准备) 创建一个查询公网 IP 的 “命令” 镜像。 @@ -156,8 +146,6 @@ curl -s http://myip.ipip.net -i ### 7.5.5 场景二:启动前的准备工作 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 需求 在启动主服务前执行初始化脚本 (如数据库迁移、权限设置)。 @@ -276,8 +264,6 @@ $ docker run --entrypoint /bin/cat myimage /etc/os-release ### 7.5.8 ENTRYPOINT 与 CMD 组合表 -相关信息如下表: - | ENTRYPOINT | CMD | 最终执行命令 | |------------|-----|-------------| | 无 | 无 | 无 (容器无法启动)| @@ -292,8 +278,6 @@ $ docker run --entrypoint /bin/cat myimage /etc/os-release ### 7.5.9 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 使用 exec 格式 如下代码块所示,展示了相关示例: @@ -319,8 +303,6 @@ CMD ["-g", "daemon off;"] #### 3. 入口脚本使用 exec -运行以下命令: - ```bash #!/bin/sh ## 准备工作... diff --git a/07_dockerfile/7.6_env.md b/07_dockerfile/7.6_env.md index 46470aa5c..73faac4e2 100644 --- a/07_dockerfile/7.6_env.md +++ b/07_dockerfile/7.6_env.md @@ -1,7 +1,5 @@ ## 7.6 ENV 设置环境变量 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.6.1 基本语法 如下代码块所示,展示了相关示例: @@ -20,8 +18,6 @@ ENV = = ... ### 7.6.2 基本用法 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 设置单个变量 如下代码块所示,展示了相关示例: @@ -47,8 +43,6 @@ ENV NODE_VERSION=20.10.0 \ ### 7.6.3 环境变量的作用 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 后续指令中使用 如下代码块所示,展示了相关示例: @@ -130,14 +124,8 @@ $ docker run -e APP_ENV=development -e DEBUG=true myimage $ docker run --env-file .env myimage ``` -#### 概述 - -总体概述了以下内容。 - #### 。env 文件格式 -运行以下命令: - ```bash ## .env @@ -150,8 +138,6 @@ DATABASE_URL=postgres://localhost/mydb ### 7.6.6 ENV vs ARG -相关信息如下表: - | 特性 | ENV | ARG | |------|-----|-----| | **生效时间** | 构建时 + 运行时 | 仅构建时 | @@ -159,10 +145,6 @@ DATABASE_URL=postgres://localhost/mydb | **覆盖方式** | `docker run -e` | `docker build --build-arg` | | **适用场景** | 应用配置 | 构建参数 (如版本号)| -#### 概述 - -总体概述了以下内容。 - #### 组合使用 如下代码块所示,展示了相关示例: @@ -191,8 +173,6 @@ $ docker build --build-arg NODE_VERSION=18 -t myapp . ### 7.6.7 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 统一管理版本号 如下代码块所示,展示了相关示例: @@ -257,8 +237,6 @@ ENV HOST=localhost \ ### 7.6.8 常见问题 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Q:环境变量在 CMD 中不展开 exec 格式不会自动展开环境变量: @@ -275,8 +253,6 @@ CMD ["sh", "-c", "python app.py --port $PORT"] #### Q:如何查看容器的环境变量 -运行以下命令: - ```bash $ docker inspect mycontainer --format '{{json .Config.Env}}' $ docker exec mycontainer env diff --git a/07_dockerfile/7.7_arg.md b/07_dockerfile/7.7_arg.md index fab19f93f..49224d376 100644 --- a/07_dockerfile/7.7_arg.md +++ b/07_dockerfile/7.7_arg.md @@ -1,7 +1,5 @@ ## 7.7 ARG 构建参数 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.7.1 基本语法 如下代码块所示,展示了相关示例: @@ -16,8 +14,6 @@ ARG <参数名>[=<默认值>] ### 7.7.2 ARG vs ENV -相关信息如下表: - | 特性 | ARG | ENV | |------|-----|-----| | **生效时间** | 仅构建时 | 构建时 + 运行时 | @@ -39,8 +35,6 @@ ARG <参数名>[=<默认值>] ### 7.7.3 基本用法 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 定义和使用 如下代码块所示,展示了相关示例: @@ -58,8 +52,6 @@ RUN echo "Using Node.js $NODE_VERSION" #### 构建时覆盖 -运行以下命令: - ```bash ## 使用默认值 @@ -74,8 +66,6 @@ $ docker build --build-arg NODE_VERSION=18 -t myapp . ### 7.7.4 ARG 的作用域 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### FROM 之前的 ARG 如下代码块所示,展示了相关示例: @@ -132,8 +122,6 @@ RUN echo "Running with Node $NODE_VERSION" ### 7.7.5 常见使用场景 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 控制基础镜像版本 如下代码块所示,展示了相关示例: @@ -231,8 +219,6 @@ $ docker build --build-arg HTTP_PROXY=http://proxy:8080 . ### 7.7.8 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 为 ARG 提供合理默认值 如下代码块所示,展示了相关示例: diff --git a/07_dockerfile/7.8_volume.md b/07_dockerfile/7.8_volume.md index b855a232e..b310df001 100644 --- a/07_dockerfile/7.8_volume.md +++ b/07_dockerfile/7.8_volume.md @@ -1,7 +1,5 @@ ## 7.8 VOLUME 定义匿名卷 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.8.1 基本语法 如下代码块所示,展示了相关示例: @@ -47,8 +45,6 @@ flowchart LR ### 7.8.3 基本用法 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 定义单个卷 如下代码块所示,展示了相关示例: @@ -71,8 +67,6 @@ VOLUME ["/data", "/logs", "/config"] ### 7.8.4 VOLUME 的行为 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 自动创建匿名卷 如果运行时未指定挂载,Docker 会自动创建匿名卷: @@ -86,8 +80,6 @@ local a1b2c3d4e5f6... # 自动创建的匿名卷 #### 2. 可被命名卷覆盖 -运行以下命令: - ```bash ## 使用命名卷替代匿名卷 @@ -96,8 +88,6 @@ $ docker run -v mysql_data:/var/lib/mysql mysql:8.0 #### 3. 可被 Bind Mount 覆盖 -运行以下命令: - ```bash ## 使用宿主机目录替代 @@ -121,10 +111,6 @@ RUN echo "hello" > /data/test.txt **原因**:VOLUME 指令之后,Docker 将该目录视为外部挂载点,不再记录对它的修改。 -#### 概述 - -总体概述了以下内容。 - #### 正确做法 如下代码块所示,展示了相关示例: @@ -145,8 +131,6 @@ VOLUME /data ### 7.8.6 常见使用场景 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 数据库持久化 如下代码块所示,展示了相关示例: @@ -178,8 +162,6 @@ VOLUME /app/uploads ### 7.8.7 查看 VOLUME 定义 -运行以下命令: - ```bash ## 查看镜像定义的 VOLUME @@ -197,8 +179,6 @@ $ docker inspect mycontainer --format '{{json .Mounts}}' | jq ### 7.8.8 VOLUME vs docker run -v -相关信息如下表: - | 特性 | Dockerfile VOLUME | docker run -v | |------|-------------------|---------------| | **定义时机** | 镜像构建时 | 容器运行时 | @@ -232,16 +212,8 @@ volumes: ### 7.8.10 安全注意事项 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - -#### 概述 - -总体概述了以下内容。 - #### 匿名卷可能导致数据丢失 -运行以下命令: - ```bash ## 使用 --rm 运行的容器,匿名卷会在容器删除时一起删除 @@ -261,8 +233,6 @@ $ docker run -v mysql_data:/var/lib/mysql mysql:8.0 ### 7.8.11 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 定义必须持久化的路径 如下代码块所示,展示了相关示例: diff --git a/07_dockerfile/7.9_expose.md b/07_dockerfile/7.9_expose.md index 778e364d6..a7ece1d54 100644 --- a/07_dockerfile/7.9_expose.md +++ b/07_dockerfile/7.9_expose.md @@ -1,7 +1,5 @@ ## 7.9 EXPOSE 声明端口 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 7.9.1 基本语法 如下代码块所示,展示了相关示例: @@ -37,8 +35,6 @@ EXPOSE 53/udp ### 7.9.3 EXPOSE 的作用 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 文档说明 告诉镜像使用者,容器将在哪些端口提供服务: @@ -76,8 +72,6 @@ $ docker port $(docker ps -q) ### 7.9.4 EXPOSE vs -p -相关信息如下表: - | 特性 | EXPOSE | -p | |------|--------|-----| | **位置** | Dockerfile | docker run 命令 | @@ -92,10 +86,6 @@ flowchart TD Expose ~~~ Run ``` -#### 概述 - -总体概述了以下内容。 - #### 没有 EXPOSE 也能 -p 如下代码块所示,展示了相关示例: @@ -119,8 +109,6 @@ $ docker run -p 8080:80 mynginx ### 7.9.5 常见误解 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 误解:EXPOSE 会打开端口 如下代码块所示,展示了相关示例: @@ -160,8 +148,6 @@ $ docker run -p 8080:80 nginx # 2. 映射:宿主机 8080 → 容器 80 ### 7.9.6 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 总是声明应用使用的端口 如下代码块所示,展示了相关示例: diff --git a/07_dockerfile/README.md b/07_dockerfile/README.md index fdfa8d176..c797c6cac 100644 --- a/07_dockerfile/README.md +++ b/07_dockerfile/README.md @@ -1,7 +1,5 @@ # 第七章 Dockerfile 指令详解 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ## 什么是 Dockerfile Dockerfile 是一个文本文件,其內包含了一条条的 **指令 (Instruction)**,每一条指令构建一层,therefore 每一条指令的内容,就是描述该层应当如何构建。 @@ -19,10 +17,6 @@ Dockerfile 是一个文本文件,其內包含了一条条的 **指令 (Instruc Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。 -### 概述 - -总体概述了以下内容。 - ### 指令详解 本章将详细讲解 Dockerfile 中的各个指令: diff --git a/07_dockerfile/summary.md b/07_dockerfile/summary.md index 4c32aecc7..b799ca12e 100644 --- a/07_dockerfile/summary.md +++ b/07_dockerfile/summary.md @@ -1,7 +1,5 @@ ## 7.19 本章小结 -相关信息如下表: - | 要点 | 说明 | |------|------| | **作用** | 设置后续指令的工作目录 | diff --git a/08_data/8.1_volume.md b/08_data/8.1_volume.md index 9c6701bde..b15e8b721 100644 --- a/08_data/8.1_volume.md +++ b/08_data/8.1_volume.md @@ -1,7 +1,5 @@ ## 8.2 数据卷 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 8.2.1 为什么需要数据卷 容器的存储层有一个关键问题:**容器删除后,数据就没了**。 @@ -19,8 +17,6 @@ flowchart LR ### 8.2.2 数据卷的特性 -相关信息如下表: - | 特性 | 说明 | |------|------| | **持久化** | 容器删除后数据仍然保留 | @@ -33,8 +29,6 @@ flowchart LR ### 8.2.3 数据卷 vs 容器存储层 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 容器存储层 (不推荐存储重要数据) 如下代码块所示,展示了相关示例: @@ -73,20 +67,14 @@ graph TD ### 8.2.4 数据卷基本操作 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 创建数据卷 -运行以下命令: - ```bash $ docker volume create my-vol ``` #### 列出所有数据卷 -运行以下命令: - ```bash $ docker volume ls DRIVER VOLUME NAME @@ -97,8 +85,6 @@ local redis_data #### 查看数据卷详情 -运行以下命令: - ```bash $ docker volume inspect my-vol [ @@ -123,12 +109,8 @@ $ docker volume inspect my-vol ### 8.2.5 挂载数据卷 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 方式一:--mount (推荐) -运行以下命令: - ```bash $ docker run -d \ --name web \ @@ -146,8 +128,6 @@ $ docker run -d \ #### 方式二:-v (简写) -运行以下命令: - ```bash $ docker run -d \ --name web \ @@ -159,8 +139,6 @@ $ docker run -d \ #### 两种方式对比 -相关信息如下表: - | 特性 | --mount | -v | |------|---------|-----| | 语法 | 键值对,更清晰 | 冒号分隔,更简洁 | @@ -169,8 +147,6 @@ $ docker run -d \ #### 只读挂载 -运行以下命令: - ```bash ## --mount 方式 @@ -189,12 +165,8 @@ $ docker run -d \ ### 8.2.6 使用场景示例 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 场景一:数据库持久化 -运行以下命令: - ```bash ## 创建数据卷 @@ -223,8 +195,6 @@ $ docker run -d \ #### 场景二:多容器共享数据 -运行以下命令: - ```bash ## 创建共享数据卷 @@ -245,8 +215,6 @@ $ docker run --rm \ #### 场景三:配置文件持久化 -运行以下命令: - ```bash ## 将 nginx 配置存储在数据卷中 @@ -261,12 +229,8 @@ $ docker run -d \ ### 8.2.7 数据卷管理 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 删除数据卷 -运行以下命令: - ```bash ## 删除指定数据卷 @@ -279,8 +243,6 @@ $ docker rm -v container_name #### 清理未使用的数据卷 -运行以下命令: - ```bash ## 查看未被任何容器使用的数据卷 @@ -301,12 +263,8 @@ $ docker volume prune -f ### 8.2.8 数据卷备份与恢复 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 备份数据卷 -运行以下命令: - ```bash ## 使用临时容器挂载数据卷,打包备份 @@ -325,8 +283,6 @@ $ docker run --rm \ #### 恢复数据卷 -运行以下命令: - ```bash ## 创建新数据卷 @@ -342,8 +298,6 @@ $ docker run --rm \ #### 备份脚本示例 -运行以下命令: - ```bash #!/bin/bash ## backup-volume.sh @@ -390,20 +344,14 @@ $ docker run -v /host/path:/app/data nginx ### 8.2.10 常见问题 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Q:如何知道容器使用了哪些数据卷? -运行以下命令: - ```bash $ docker inspect container_name --format '{{json .Mounts}}' | jq ``` #### Q:数据卷的数据在哪里? -运行以下命令: - ```bash ## 查看数据卷详情 diff --git a/08_data/8.2_bind-mounts.md b/08_data/8.2_bind-mounts.md index 7c7cee551..4dfb428b0 100644 --- a/08_data/8.2_bind-mounts.md +++ b/08_data/8.2_bind-mounts.md @@ -1,7 +1,5 @@ ## 8.3 挂载主机目录 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 8.3.1 什么是绑定挂载 Bind Mount (绑定挂载) 将 **宿主机的目录或文件** 直接挂载到容器中。容器可以读写宿主机的文件系统。 @@ -25,8 +23,6 @@ flowchart LR ### 8.3.2 Bind Mount vs Volume -相关信息如下表: - | 特性 | Bind Mount | Volume | |------|------------|--------| | **数据位置** | 宿主机任意路径 | Docker 管理的目录 | @@ -36,14 +32,8 @@ flowchart LR | **适用场景** | 开发环境、配置文件 | 生产数据持久化 | | **备份** | 直接访问文件 | 需要通过 Docker | -#### 概述 - -总体概述了以下内容。 - #### 选择建议 -相关信息如下表: - | 需求 | 推荐方案 | |------|----------| | 开发时同步代码 | Bind Mount | @@ -57,12 +47,8 @@ flowchart LR ### 8.3.3 基本语法 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 使用 --mount (推荐) -运行以下命令: - ```bash $ docker run -d \ --mount type=bind,source=/宿主机路径,target=/容器路径 \ @@ -71,8 +57,6 @@ $ docker run -d \ #### 使用 -v (简写) -运行以下命令: - ```bash $ docker run -d \ -v /宿主机路径:/容器路径 \ @@ -81,8 +65,6 @@ $ docker run -d \ #### 两种语法对比 -相关信息如下表: - | 特性 | --mount | -v | |------|---------|-----| | 语法 | 键值对,更清晰 | 冒号分隔,更简洁 | @@ -93,12 +75,8 @@ $ docker run -d \ ### 8.3.4 使用场景 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 场景一:开发环境代码同步 -运行以下命令: - ```bash ## 将本地代码目录挂载到容器 @@ -117,8 +95,6 @@ $ echo "Hello" > src/index.html #### 场景二:配置文件挂载 -运行以下命令: - ```bash ## 挂载自定义 nginx 配置 @@ -129,8 +105,6 @@ $ docker run -d \ #### 场景三:日志收集 -运行以下命令: - ```bash ## 将容器日志输出到宿主机目录 @@ -141,8 +115,6 @@ $ docker run -d \ #### 场景四:共享 SSH 密钥 -运行以下命令: - ```bash ## 挂载 SSH 密钥(只读) @@ -182,8 +154,6 @@ touch: /app/config/new.txt: Read-only file system ### 8.3.6 挂载单个文件 -运行以下命令: - ```bash ## 挂载 bash 历史记录 @@ -204,8 +174,6 @@ $ docker run -d \ ### 8.3.7 查看挂载信息 -运行以下命令: - ```bash $ docker inspect mycontainer --format '{{json .Mounts}}' | jq ``` @@ -237,12 +205,8 @@ $ docker inspect mycontainer --format '{{json .Mounts}}' | jq ### 8.3.8 常见问题 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Q:路径不存在报错 -运行以下命令: - ```bash $ docker run --mount type=bind,source=/not/exist,target=/app nginx docker: Error response from daemon: invalid mount config for type "bind": @@ -289,12 +253,8 @@ $ docker run -v /host/path:/container/path:cached myapp ### 8.3.9 最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 开发环境使用 Bind Mount -运行以下命令: - ```bash ## 代码热更新 @@ -303,8 +263,6 @@ $ docker run -v $(pwd):/app -p 3000:3000 node npm run dev #### 2. 生产环境使用 Volume -运行以下命令: - ```bash ## 数据持久化 @@ -313,16 +271,12 @@ $ docker run -v mysql_data:/var/lib/mysql mysql #### 3. 配置文件使用只读挂载 -运行以下命令: - ```bash $ docker run -v /config/nginx.conf:/etc/nginx/nginx.conf:ro nginx ``` #### 4. 注意路径安全 -运行以下命令: - ```bash ## ❌ 危险:挂载根目录或敏感目录 diff --git a/08_data/8.3_tmpfs.md b/08_data/8.3_tmpfs.md index 38e9ff1c7..4b2476e6e 100644 --- a/08_data/8.3_tmpfs.md +++ b/08_data/8.3_tmpfs.md @@ -30,8 +30,6 @@ $ docker run --mount type=tmpfs,destination=/run,tmpfs-size=67108864 nginx ### 8.4.4 与 Volume / Bind Mount 对比 -相关信息如下表: - | 类型 | 数据位置 | 持久化 | 典型用途 | |------|---------|-------|---------| | Volume | Docker 管理目录 | 是 | 数据库、长期业务数据 | diff --git a/08_data/README.md b/08_data/README.md index ad83f4395..99bc6e190 100644 --- a/08_data/README.md +++ b/08_data/README.md @@ -1,4 +1,4 @@ -# 数据管理 +# 第八章 数据管理 如图 8-1 所示,Docker 数据管理主要围绕三类挂载方式展开。 diff --git a/08_data/summary.md b/08_data/summary.md index 0bbd6c69b..8f71a9fb0 100644 --- a/08_data/summary.md +++ b/08_data/summary.md @@ -1,7 +1,5 @@ ## 8.5 本章小结 -相关信息如下表: - | 要点 | 说明 | |------|------| | **作用** | 将宿主机目录挂载到容器 | diff --git a/09_network/README.md b/09_network/README.md index 1df0064fd..d77854245 100644 --- a/09_network/README.md +++ b/09_network/README.md @@ -1,4 +1,4 @@ -# 网络配置 +# 第九章 网络配置 Docker 容器需要网络来与外部世界通信、容器之间相互通信以及与宿主机通信。Docker 在安装时会自动配置网络基础设施,大多数情况下开箱即用。 diff --git a/10_buildx/10.2_buildx.md b/10_buildx/10.2_buildx.md index 766f12322..6c6c268ad 100644 --- a/10_buildx/10.2_buildx.md +++ b/10_buildx/10.2_buildx.md @@ -1,7 +1,5 @@ ## 10.2 使用 Buildx 构建镜像 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 10.2.1 使用 Buildx 的使用非常直观,绝大多数情况下可以替代 `docker build` 命令。 diff --git a/10_buildx/10.3_multi-arch-images.md b/10_buildx/10.3_multi-arch-images.md index 50e1aa034..fca64902b 100644 --- a/10_buildx/10.3_multi-arch-images.md +++ b/10_buildx/10.3_multi-arch-images.md @@ -109,8 +109,6 @@ ENTRYPOINT ["/dist"] #### 创建 manifest list -运行以下命令: - ```bash ## 首先,为每个架构构建并推送镜像 diff --git a/10_buildx/README.md b/10_buildx/README.md index 94458221a..b1d7fdb96 100644 --- a/10_buildx/README.md +++ b/10_buildx/README.md @@ -4,10 +4,6 @@ Docker Buildx 是一个 docker CLI 插件,其扩展了 docker 命令,支持 > Buildx 需要 Docker v19.03+。在较新版本中已更常用且功能更完整。 -## 概述 - -总体概述了以下内容。 - ## 本章内容 本章将详细介绍 Docker Buildx 的使用,包括: diff --git a/11_compose/11.1_introduction.md b/11_compose/11.1_introduction.md index cabf4adac..d73d5c30f 100644 --- a/11_compose/11.1_introduction.md +++ b/11_compose/11.1_introduction.md @@ -12,8 +12,6 @@ ### 11.1.1 概述 -总体概述了以下内容。 - ### 11.1.2 模板文件规范 Compose 模板文件采用 YAML 格式,扩展名为 `.yml` 或 `.yaml`。 diff --git a/11_compose/11.2_install.md b/11_compose/11.2_install.md index c99cb8a19..0ed1d89ea 100644 --- a/11_compose/11.2_install.md +++ b/11_compose/11.2_install.md @@ -34,8 +34,6 @@ $ chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose ### 11.2.2 测试安装 -运行以下命令: - ```bash $ docker compose version Docker Compose version v5.0.2 @@ -43,8 +41,6 @@ Docker Compose version v5.0.2 ### 11.2.3 bash 补全命令 -运行以下命令: - ```bash $ curl -L https://raw.githubusercontent.com/docker/compose/v5.0.2/contrib/completion/bash/docker-compose | sudo tee /etc/bash_completion.d/docker-compose > /dev/null ``` diff --git a/11_compose/11.3_usage.md b/11_compose/11.3_usage.md index 89a61d05d..1a4e62143 100644 --- a/11_compose/11.3_usage.md +++ b/11_compose/11.3_usage.md @@ -67,8 +67,6 @@ services: #### 运行 compose 项目 -运行以下命令: - ```bash $ docker compose up ``` @@ -80,24 +78,18 @@ $ docker compose up #### 后台运行 -运行以下命令: - ```bash $ docker compose up -d ``` #### 停止 -运行以下命令: - ```bash $ docker compose stop ``` #### 进入服务 -运行以下命令: - ```bash $ docker compose exec redis sh /data # redis-cli @@ -107,48 +99,36 @@ $ docker compose exec redis sh #### 查看日志 -运行以下命令: - ```bash $ docker compose logs -f ``` #### 构建镜像 -运行以下命令: - ```bash $ docker compose build ``` #### 启动服务 -运行以下命令: - ```bash $ docker compose start ``` #### 运行一次性命令 -运行以下命令: - ```bash $ docker compose run web python app.py ``` #### 验证 Compose 文件 -运行以下命令: - ```bash $ docker compose config ``` #### 删除项目 -运行以下命令: - ```bash $ docker compose down ``` diff --git a/11_compose/11.4_commands.md b/11_compose/11.4_commands.md index 5a81d8dff..d139dbd4b 100644 --- a/11_compose/11.4_commands.md +++ b/11_compose/11.4_commands.md @@ -26,8 +26,6 @@ docker compose [-f=...] [options] [COMMAND] [ARGS...] ### 11.4.3 命令使用说明 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### `build` 格式为 `docker compose build [options] [SERVICE...]`。 diff --git a/11_compose/11.6_django.md b/11_compose/11.6_django.md index 9172fdce7..192750fcc 100644 --- a/11_compose/11.6_django.md +++ b/11_compose/11.6_django.md @@ -254,8 +254,6 @@ ALLOWED_HOSTS = ['*'] ### 11.6.8 步骤 6:启动应用 -运行以下命令: - ```bash $ docker compose up ``` @@ -301,8 +299,6 @@ $ docker compose exec db psql -U django_user -d django_db ### 11.6.10 常见问题排查 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Q1:数据库连接失败 **错误信息**:`django.db.utils.OperationalError: could not connect to server` **可能原因与解决方案**: @@ -330,8 +326,6 @@ $ docker compose logs db #### Q3:权限问题 -运行以下命令: - ```bash ## 如果容器内创建的文件 root 用户所有 diff --git a/11_compose/11.7_rails.md b/11_compose/11.7_rails.md index b3a833f26..6ad716653 100644 --- a/11_compose/11.7_rails.md +++ b/11_compose/11.7_rails.md @@ -194,8 +194,6 @@ production: ### 11.7.9 步骤 7:启动应用 -运行以下命令: - ```bash $ docker compose up ``` @@ -226,8 +224,6 @@ Created database 'myapp_test' ### 11.7.11 常用开发命令 -运行以下命令: - ```bash ## 数据库迁移 @@ -252,8 +248,6 @@ $ docker compose exec web bash ### 11.7.12 常见问题 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Q:数据库连接失败 检查 `DATABASE_URL` 环境变量格式是否正确,确保 db 服务已启动: @@ -283,8 +277,6 @@ $ docker compose run --rm web bundle update ### 11.7.13 开发 vs 生产 -相关信息如下表: - | 配置项 | 开发环境 | 生产环境 | |--------|---------|---------| | Rails 服务器 | Puma (开发模式) | Puma + Nginx | diff --git a/11_compose/11.8_wordpress.md b/11_compose/11.8_wordpress.md index 909804a0d..1dd08ad43 100644 --- a/11_compose/11.8_wordpress.md +++ b/11_compose/11.8_wordpress.md @@ -81,8 +81,6 @@ networks: ### 11.8.3 配置文件详解 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 环境变量 (.env) 为了安全,不要在 `compose.yaml` 中直接写密码。创建 `.env` 文件: @@ -136,8 +134,6 @@ $ docker compose logs -f ### 11.8.5 生产环境最佳实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 1. 数据库备份 不要只依赖 Volume。建议定期备份数据库: @@ -194,8 +190,6 @@ WordPress 支持 Redis 缓存以提高性能。 ### 11.8.6 常见问题 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Q:数据库连接错误 **现象**:访问页面显示 “Error establishing a database connection”。**排查**: diff --git a/12_implementation/12.1_arch.md b/12_implementation/12.1_arch.md index e3223545a..53259802f 100644 --- a/12_implementation/12.1_arch.md +++ b/12_implementation/12.1_arch.md @@ -142,8 +142,6 @@ flowchart TD ### 12.1.6 总结 -相关信息如下表: - | 组件 | 角色 | 关键职责 | |------|------|----------| | **CLI** | 指挥官 | 发送指令,展示结果 | diff --git a/12_implementation/12.2_namespace.md b/12_implementation/12.2_namespace.md index 354758ed5..15f56d479 100644 --- a/12_implementation/12.2_namespace.md +++ b/12_implementation/12.2_namespace.md @@ -52,8 +52,6 @@ PID Namespace 负责进程 ID 的隔离,使得容器内的进程彼此不可 #### PID 隔离效果 -运行以下命令: - ```bash ## 宿主机上查看进程 @@ -141,8 +139,6 @@ MNT Namespace 负责文件系统挂载点的隔离,确保容器看到独立的 #### 与 chroot 的区别 -相关信息如下表: - | 特性 | chroot | MNT Namespace | |------|--------|---------------| | 安全性 | 可以逃逸 | 更安全 | @@ -161,8 +157,6 @@ UTS Namespace 主要用于隔离主机名和域名。 #### UTS 隔离效果 -运行以下命令: - ```bash ## 宿主机 @@ -244,8 +238,6 @@ flowchart LR #### 实验 1:UTS Namespace -运行以下命令: - ```bash ## 创建新的 UTS namespace 并启动 shell @@ -266,8 +258,6 @@ my-server #### 实验 2:PID Namespace -运行以下命令: - ```bash ## 创建新的 PID 和 MNT namespace @@ -287,8 +277,6 @@ root 8 0.0 0.0 10072 3200 pts/0 R+ 10:00 0:00 ps aux #### 实验 3:NET Namespace -运行以下命令: - ```bash ## 创建新的网络 namespace diff --git a/12_implementation/12.3_cgroups.md b/12_implementation/12.3_cgroups.md index 84ae69513..fed7ca576 100644 --- a/12_implementation/12.3_cgroups.md +++ b/12_implementation/12.3_cgroups.md @@ -33,8 +33,6 @@ flowchart LR ### 12.3.2 cgroups 的历史 -相关信息如下表: - | 时间 | 事件 | |------|------| | 2006 | Google 工程师提出 cgroups 概念 | @@ -46,8 +44,6 @@ flowchart LR ### 12.3.3 cgroups 可以限制的资源 -相关信息如下表: - | 资源类型 | 子系统 | 说明 | |---------|--------|------| | **CPU** | `cpu`, `cpuset` | CPU 使用时间和核心分配 | @@ -64,8 +60,6 @@ Docker 提供了丰富的参数来配置容器的资源限制,主要包括内 #### 内存限制 -运行以下命令: - ```bash ## 限制容器最多使用 512MB 内存 @@ -89,8 +83,6 @@ $ docker run --memory-reservation 256m myapp #### CPU 限制 -运行以下命令: - ```bash ## 限制使用 1.5 个 CPU 核心 @@ -114,8 +106,6 @@ $ docker run --cpu-shares=512 myapp #### 磁盘 I/O 限制 -运行以下命令: - ```bash ## 限制设备写入速度为 10MB/s @@ -132,8 +122,6 @@ $ docker run --device-write-iops /dev/sda:100 myapp #### 进程数限制 -运行以下命令: - ```bash ## 限制最多 100 个进程 @@ -144,8 +132,6 @@ $ docker run --pids-limit=100 myapp ### 12.3.5 查看容器资源使用 -运行以下命令: - ```bash ## 实时监控所有容器的资源使用 @@ -167,12 +153,8 @@ $ docker inspect mycontainer --format '{{json .HostConfig}}' | jq ### 12.3.6 资源限制的效果 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 内存超限 -运行以下命令: - ```bash ## 启动限制 100MB 内存的容器 @@ -191,8 +173,6 @@ abc123 Exited (137) 5 seconds ago hopeful_darwin #### CPU 限制验证 -运行以下命令: - ```bash ## 不限制 CPU @@ -211,8 +191,6 @@ $ docker run --rm --cpus=1 stress --cpu 4 ### 12.3.7 cgroups v1 vs v2 -相关信息如下表: - | 特性 | cgroups v1 | cgroups v2 | |------|-----------|-----------| | 层级结构 | 多层级 (每个资源单独)| 统一层级 | @@ -221,14 +199,8 @@ $ docker run --rm --cpus=1 stress --cpu 4 | PSI (压力监控)| ❌ | ✅ | | rootless 容器 | 部分支持 | 完整支持 | -#### 概述 - -总体概述了以下内容。 - #### 检查系统使用的版本 -运行以下命令: - ```bash ## 查看 cgroup 版本 @@ -271,8 +243,6 @@ services: #### 1. 始终设置内存限制 -运行以下命令: - ```bash ## 防止 OOM 影响宿主机 @@ -281,16 +251,12 @@ $ docker run -m 1g myapp #### 2. 为关键应用设置 CPU 保证 -运行以下命令: - ```bash $ docker run --cpus=2 --cpu-shares=2048 critical-app ``` #### 3. 监控资源使用 -运行以下命令: - ```bash ## 配合 Prometheus + cAdvisor 监控 diff --git a/12_implementation/12.4_ufs.md b/12_implementation/12.4_ufs.md index 123a8073c..cb3e89fd0 100644 --- a/12_implementation/12.4_ufs.md +++ b/12_implementation/12.4_ufs.md @@ -107,8 +107,6 @@ Docker 可使用多种联合文件系统实现: #### 各发行版推荐 -相关信息如下表: - | Linux 发行版 | 推荐存储驱动 | |-------------|-------------| | Ubuntu 16.04+ | overlay2 | @@ -119,8 +117,6 @@ Docker 可使用多种联合文件系统实现: #### 查看当前存储驱动 -运行以下命令: - ```bash $ docker info | grep "Storage Driver" Storage Driver: overlay2 @@ -152,14 +148,8 @@ flowchart TD - **workdir**:OverlayFS 的工作目录 - **merged**:联合挂载后的视图 -#### 概述 - -总体概述了以下内容。 - #### 文件操作行为 -相关信息如下表: - | 操作 | 行为 | |------|------| | **读取** | 从上到下查找第一个匹配的文件 | @@ -171,8 +161,6 @@ flowchart TD ### 12.4.6 查看镜像层 -运行以下命令: - ```bash ## 查看镜像的层信息 diff --git a/12_implementation/summary.md b/12_implementation/summary.md index dc38c0445..fd6ded29e 100644 --- a/12_implementation/summary.md +++ b/12_implementation/summary.md @@ -1,7 +1,5 @@ ## 12.7 本章小结 -相关信息如下表: - | Namespace | 隔离内容 | 一句话说明 | |-----------|---------|-----------| | PID | 进程 ID | 容器有自己的进程树 | diff --git a/13_kubernetes_concepts/13.1_intro.md b/13_kubernetes_concepts/13.1_intro.md index c1123c74c..cd14085c9 100644 --- a/13_kubernetes_concepts/13.1_intro.md +++ b/13_kubernetes_concepts/13.1_intro.md @@ -32,8 +32,6 @@ Kubernetes 完美解决了这些问题。 ### 13.1.3 核心概念 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Pod (豆荚) Kubernetes 的最小调度单位。一个 Pod 可以包含一个或多个紧密协作的容器 (共享网络和存储)。就像豌豆荚里的豌豆一样。 diff --git a/13_kubernetes_concepts/README.md b/13_kubernetes_concepts/README.md index 303bb558f..dfee4e418 100644 --- a/13_kubernetes_concepts/README.md +++ b/13_kubernetes_concepts/README.md @@ -1,4 +1,4 @@ -# Kubernetes +# 第十三章 容器编排基础 `Kubernetes` 是 Google 发起的开源容器编排系统,它支持多种云平台与私有数据中心。 diff --git a/14_kubernetes_setup/14.1_kubeadm.md b/14_kubernetes_setup/14.1_kubeadm.md index 56a8f3da9..6d3594861 100644 --- a/14_kubernetes_setup/14.1_kubeadm.md +++ b/14_kubernetes_setup/14.1_kubeadm.md @@ -234,8 +234,6 @@ oom_score = 0 #### Ubuntu/Debian -运行以下命令: - ```bash $ K8S_MINOR="v1.35" @@ -256,8 +254,6 @@ $ sudo apt-mark hold kubelet kubeadm kubectl #### CentOS/Fedora -运行以下命令: - ```bash $ K8S_MINOR="v1.35" @@ -276,12 +272,8 @@ $ sudo yum install -y kubelet kubeadm kubectl cri-tools kubernetes-cni ### 14.1.4 修改内核的运行参数 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 加载内核模块 -运行以下命令: - ```bash $ cat < example.ign ``` @@ -46,8 +42,6 @@ $ sudo coreos-installer install /dev/sda --ignition-file example.ign ### 17.2.5 使用 -运行以下命令: - ```bash $ ssh core@虚拟机IP diff --git a/17_ecosystem/17.3_podman.md b/17_ecosystem/17.3_podman.md index 390dd40ef..b422c9b12 100644 --- a/17_ecosystem/17.3_podman.md +++ b/17_ecosystem/17.3_podman.md @@ -19,8 +19,6 @@ Podman 支持多种操作系统,安装过程也相对简单。 ### 17.3.1 CentOS / RHEL -运行以下命令: - ```bash $ sudo yum -y install podman ``` @@ -41,8 +39,6 @@ $ podman machine start ### 17.3.1 运行容器 -运行以下命令: - ```bash ## $ docker run -d -p 80:80 nginx:alpine @@ -51,16 +47,12 @@ $ podman run -d -p 80:80 nginx:alpine ### 17.3.2 列出容器 -运行以下命令: - ```bash $ podman ps ``` ### 17.3.3 构建镜像 -运行以下命令: - ```bash $ podman build -t myimage . ``` @@ -89,8 +81,6 @@ $ alias docker=podman ### 17.3.1 进阶用法 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### Systemd 集成 Podman 可以生成 systemd 单元文件,让容器像普通系统服务一样管理。 diff --git a/18_security/18.1_kernel_ns.md b/18_security/18.1_kernel_ns.md index 123700470..daabbc4d0 100644 --- a/18_security/18.1_kernel_ns.md +++ b/18_security/18.1_kernel_ns.md @@ -12,7 +12,7 @@ Docker 容器和 LXC 容器很相似,所提供的安全特性也差不多。 那么,内核中实现命名空间和私有网络的代码是否足够成熟? -内核命名空间从 2.6.15 版本 (2008 年 7 月发布) 之后被引入,数年间,这些机制的可靠性在诸多大型生产系统中被实践验证。 +内核命名空间从 2.6.15 版本 (2006 年 1 月发布) 之后被引入,数年间,这些机制的可靠性在诸多大型生产系统中被实践验证。 实际上,命名空间的想法和设计提出的时间要更早,最初是为了在内核中引入一种机制来实现 [OpenVZ](https://en.wikipedia.org/wiki/OpenVZ) 的特性。 而 OpenVZ 项目早在 2005 年就发布了,其设计和实现都已经十分成熟。 diff --git a/18_security/README.md b/18_security/README.md index 22edbdd97..f755fee7b 100644 --- a/18_security/README.md +++ b/18_security/README.md @@ -1,4 +1,4 @@ -# 安全 +# 第十八章 安全 容器安全是生产环境部署的核心考量。本章介绍 Docker 的安全机制和最佳实践。 @@ -28,8 +28,6 @@ flowchart LR ## 核心安全机制 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 1. 命名空间 提供进程、网络、文件系统等资源的隔离: @@ -89,12 +87,8 @@ $ docker exec myapp cat /proc/1/status | grep Cap ## 镜像安全 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 使用可信镜像 -运行以下命令: - ```bash ## ✅ 使用官方镜像 @@ -153,8 +147,6 @@ $ cosign verify --key cosign.pub $IMAGE ## 运行时安全 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 1. 非 root 用户运行 > 笔者强调:这是最重要的安全实践之一。 @@ -187,8 +179,6 @@ $ docker run -u 1001:1001 myapp ### 2. 只读文件系统 -运行以下命令: - ```bash ## 根文件系统只读 @@ -201,8 +191,6 @@ $ docker run --read-only --tmpfs /tmp --tmpfs /var/run myapp ### 3. 禁用特权模式 -运行以下命令: - ```bash ## ❌ 绝对不要在生产环境使用 @@ -215,8 +203,6 @@ $ docker run --cap-add=SYS_TIME myapp ### 4. 限制资源 -运行以下命令: - ```bash $ docker run \ -m 512m \ # 内存限制 @@ -228,8 +214,6 @@ $ docker run \ ### 5. 网络隔离 -运行以下命令: - ```bash ## 禁用网络(适用于不需要网络的任务) @@ -245,12 +229,8 @@ $ docker run --network=isolated_net myapp ## Dockerfile 安全实践 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 1. 使用精简基础镜像 -Dockerfile 内容如下: - ```dockerfile ## ✅ 好:使用精简镜像 @@ -265,8 +245,6 @@ FROM ubuntu:24.04 # ~78MB ### 2. 多阶段构建 -Dockerfile 内容如下: - ```dockerfile ## 构建阶段 @@ -285,8 +263,6 @@ CMD ["node", "/app/server.js"] ### 3. 不存储敏感信息 -Dockerfile 内容如下: - ```dockerfile ## ❌ 错误:敏感信息写入镜像 @@ -302,8 +278,6 @@ COPY .env /app/ ### 4. 固定依赖版本 -Dockerfile 内容如下: - ```dockerfile ## ✅ 固定版本 @@ -337,8 +311,6 @@ RUN apk add curl ## 高级安全方案 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### Seccomp 系统调用过滤 限制容器可以使用的系统调用: @@ -406,8 +378,6 @@ $ cosign verify --key cosign.pub $IMAGE ## 本章小结 -相关信息如下表: - | 安全措施 | 重要程度 | 实现方式 | |---------|---------|---------| | 非 root 运行 | ⭐⭐⭐ | `USER` 指令 | diff --git a/19_observability/19.1_prometheus.md b/19_observability/19.1_prometheus.md index 115032fa4..df9475d39 100644 --- a/19_observability/19.1_prometheus.md +++ b/19_observability/19.1_prometheus.md @@ -109,8 +109,6 @@ volumes: #### 3. 启动服务 -运行以下命令: - ```bash $ docker compose up -d ``` diff --git a/20_cases_os/20.1_busybox.md b/20_cases_os/20.1_busybox.md index 55f70dc47..f06b2bcea 100644 --- a/20_cases_os/20.1_busybox.md +++ b/20_cases_os/20.1_busybox.md @@ -1,7 +1,5 @@ # 20.2 Busybox -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 20.2.1 简介 下图直观地展示了本节内容: diff --git a/20_cases_os/20.2_alpine.md b/20_cases_os/20.2_alpine.md index df20c7657..cafb94b8e 100644 --- a/20_cases_os/20.2_alpine.md +++ b/20_cases_os/20.2_alpine.md @@ -1,7 +1,5 @@ # 20.3 Alpine -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 20.3.1 简介 下图直观地展示了本节内容: diff --git a/20_cases_os/20.3_debian.md b/20_cases_os/20.3_debian.md index b6564d452..83641e2dc 100644 --- a/20_cases_os/20.3_debian.md +++ b/20_cases_os/20.3_debian.md @@ -15,10 +15,6 @@ 众多的 `Linux` 发行版,例如 `Ubuntu`、`Knoppix` 和 `Linspire` 及 `Xandros` 等,都基于 `Debian GNU/Linux`。 -#### 概述 - -总体概述了以下内容。 - #### 使用 Debian 官方镜像 Debian 是一个也是一个常用的基础镜像。 @@ -43,10 +39,6 @@ Debian GNU/Linux 8 `Ubuntu` 是一个以桌面应用为主的 `GNU/Linux` 操作系统,其名称来自非洲南部祖鲁语或豪萨语的 “ubuntu” 一词 (官方译名 “友帮拓”,另有 “吾帮托”、“乌班图”、“有奔头” 或 “乌斑兔” 等译名)。`Ubuntu` 意思是 “人性” 以及 “我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的 “仁爱” 思想。`Ubuntu` 基于 `Debian` 发行版和 `GNOME/Unity` 桌面环境,与 `Debian` 的不同在于它每 6 个月会发布一个新版本,每 2 年推出一个长期支持 **(Long Term Support,LTS)** 版本,一般支持 3 年时间。 -#### 概述 - -总体概述了以下内容。 - #### 使用 Ubuntu 官方镜像 Ubuntu 是目前最流行的 Linux 发行版之一。 diff --git a/20_cases_os/20.4_centos.md b/20_cases_os/20.4_centos.md index fc9094987..077dccd6c 100644 --- a/20_cases_os/20.4_centos.md +++ b/20_cases_os/20.4_centos.md @@ -1,7 +1,5 @@ # 20.5 CentOS 和 Fedora -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 20.5.1 CentOS 系统简介 `CentOS` 和 `Fedora` 都是基于 `Redhat` 的常见 Linux 分支。`CentOS` 是目前企业级服务器的常用操作系统;`Fedora` 则主要面向个人桌面用户。 @@ -11,10 +9,6 @@ CentOS (Community Enterprise Operating System,中文意思是:社区企业操作系统),它是基于 `Red Hat Enterprise Linux` 源代码编译而成。由于 `CentOS` 与 `Redhat Linux` 源于相同的代码基础,所以很多成本敏感且需要高稳定性的公司就使用 `CentOS` 来替代商业版 `Red Hat Enterprise Linux`。`CentOS` 自身不包含闭源软件。 -#### 概述 - -总体概述了以下内容。 - #### 使用 CentOS 官方镜像 CentOS 官方镜像的使用非常简单。 @@ -44,10 +38,6 @@ CentOS Linux release 7.9.2009 (Core) `Fedora` 由 `Fedora Project` 社区开发,红帽公司赞助的 `Linux` 发行版。它的目标是创建一套新颖、多功能并且自由和开源的操作系统。`Fedora` 的功能对于用户而言,它是一套功能完备的,可以更新的免费操作系统,而对赞助商 `Red Hat` 而言,它是许多新技术的测试平台。被认为可用的技术最终会加入到 `Red Hat Enterprise Linux` 中。 -#### 概述 - -总体概述了以下内容。 - #### 使用 Fedora 官方镜像 使用 `docker run` 命令直接运行 `Fedora` 官方镜像,并登录 `bash`。 diff --git a/21_case_devops/21.1_devops_workflow.md b/21_case_devops/21.1_devops_workflow.md index 6ad87c692..16c61be5b 100644 --- a/21_case_devops/21.1_devops_workflow.md +++ b/21_case_devops/21.1_devops_workflow.md @@ -20,8 +20,6 @@ 使用 Docker 多阶段构建可以有效减小镜像体积。 -Dockerfile 内容如下: - ```dockerfile ## Build stage diff --git a/21_case_devops/21.3_drone.md b/21_case_devops/21.3_drone.md index a3cd2c277..cb00eee07 100644 --- a/21_case_devops/21.3_drone.md +++ b/21_case_devops/21.3_drone.md @@ -76,8 +76,6 @@ trigger: ## 21.3.3 推送项目源代码到 GitHub -运行以下命令: - ```bash git add . diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 917ff896c..ccd32e26f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,10 +36,6 @@ $ git rebase upstream/master $ git push -f origin master ``` -## 概述 - -总体概述了以下内容。 - ## 排版规范 本开源书籍遵循[中文排版指南](https://github.com/mzlogin/chinese-copywriting-guidelines)规范。 diff --git a/SUMMARY.md b/SUMMARY.md index c738d5589..079c1a833 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -142,7 +142,7 @@ * [16.2 腾讯云](16_cloud/16.2_tencentCloud.md) * [16.3 阿里云](16_cloud/16.3_alicloud.md) * [16.4 亚马逊云](16_cloud/16.4_aws.md) - * [16.6 多云部署策略](16_cloud/16.6_multicloud.md) + * [16.5 多云部署策略](16_cloud/16.6_multicloud.md) * [本章小结](16_cloud/summary.md) * [第十七章 容器其它生态](17_ecosystem/README.md) * [17.1 Fedora CoreOS 简介](17_ecosystem/17.1_coreos_intro.md) diff --git a/appendix/20.1_best_practices.md b/appendix/20.1_best_practices.md index 1e23ddb06..b3399958c 100644 --- a/appendix/20.1_best_practices.md +++ b/appendix/20.1_best_practices.md @@ -4,8 +4,6 @@ ### 一般性的指南和建议 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 容器应该是短暂的 通过 `Dockerfile` 构建的镜像所启动的容器应该尽可能短暂 (生命周期短)。“短暂” 意味着可以停止和销毁容器,并且创建一个新容器并部署好所需的设置和配置工作量应该是极小的。 @@ -104,10 +102,6 @@ LABEL vendor=ACME\ Incorporated \ 为了保持 `Dockerfile` 文件的可读性,可理解性,以及可维护性,建议将长的或复杂的 `RUN` 指令用反斜杠 `\` 分割成多行。 -##### 概述 - -总体概述了以下内容。 - ##### apt-get `RUN` 指令最常见的用法是安装包用的 `apt-get`。因为 `RUN apt-get` 指令会安装包,所以有几个问题需要注意。 diff --git a/appendix/20.2_debug.md b/appendix/20.2_debug.md index 85c0dfd18..28b4360a5 100644 --- a/appendix/20.2_debug.md +++ b/appendix/20.2_debug.md @@ -1,7 +1,5 @@ ## 如何调试 Docker -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 开启 Debug 模式 在 dockerd 配置文件 daemon.json (默认位于 /etc/docker/) 中添加 @@ -22,8 +20,6 @@ $ sudo kill -SIGHUP $(pidof dockerd) ### 检查内核日志 -运行以下命令: - ```bash $ sudo dmesg |grep dockerd $ sudo dmesg |grep runc @@ -55,8 +51,6 @@ $ sudo rm -rf /var/lib/docker ### 常见故障排查 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - #### 容器启动失败 如果容器启动后立即退出,可以使用 `docker logs` 查看原因。 @@ -69,8 +63,6 @@ $ sudo rm -rf /var/lib/docker #### 网络连接问题 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ##### 容器内部无法联网 1. 检查 Docker DNS 配置 (`/etc/docker/daemon.json`)。 diff --git a/appendix/20.3_resources.md b/appendix/20.3_resources.md index 5d6713c19..2b283b85a 100644 --- a/appendix/20.3_resources.md +++ b/appendix/20.3_resources.md @@ -1,7 +1,5 @@ ## 资源链接 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 官方网站 * Docker 官方主页:https://www.docker.com diff --git a/appendix/README.md b/appendix/README.md index c0e936aca..84c3d7530 100644 --- a/appendix/README.md +++ b/appendix/README.md @@ -2,10 +2,6 @@ 本章包含了 Docker 相关的参考资料、常见问题解答以及最佳实践指南,旨在为读者提供便捷的查阅工具。 -## 概述 - -总体概述了以下内容。 - ## 目录 * [**常见问题总结 (FAQ)**](faq/README.md):汇总了学习和使用 Docker 过程中的常见问题与错误解决方案。 diff --git a/appendix/command/README.md b/appendix/command/README.md index d94c5fbf9..5bea7319c 100644 --- a/appendix/command/README.md +++ b/appendix/command/README.md @@ -1,11 +1,5 @@ # Docker 命令查询 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - -## 概述 - -总体概述了以下内容。 - ## 基本语法 Docker 命令有两大类,客户端命令和服务端命令。前者是主要的操作接口,后者用来启动 Docker Daemon。 diff --git a/appendix/command/docker.md b/appendix/command/docker.md index 0a6f1091c..397c5c1ef 100644 --- a/appendix/command/docker.md +++ b/appendix/command/docker.md @@ -1,7 +1,5 @@ ## 客户端命令 - docker -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 客户端命令选项 * `--config=""`:指定客户端配置文件,默认为 `~/.docker`; diff --git a/appendix/command/dockerd.md b/appendix/command/dockerd.md index b1b7521ae..c0362358a 100644 --- a/appendix/command/dockerd.md +++ b/appendix/command/dockerd.md @@ -1,7 +1,5 @@ ## 服务端命令 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 使用说明 `dockerd` 参数会随版本变化。建议优先在目标机器上执行 `dockerd --help`,并以 `daemon.json` 为主进行持久化配置。 diff --git a/appendix/faq/README.md b/appendix/faq/README.md index d18769053..43f4fa702 100644 --- a/appendix/faq/README.md +++ b/appendix/faq/README.md @@ -1,11 +1,7 @@ # 附录一:常见问题总结 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ## 镜像相关 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 如何批量清理临时镜像文件? 答:可以使用 `docker image prune` 命令。 @@ -37,8 +33,6 @@ ## 容器相关 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 容器退出后,通过 docker container ls 命令查看不到,数据会丢失么? 答:容器退出后会处于终止 (exited) 状态,此时可以通过 `docker container ls -a` 查看。其中的数据也不会丢失,还可以通过 `docker start` 命令来启动它。只有删除掉容器才会清除所有数据。 @@ -98,12 +92,6 @@ $ docker run --network=my-net --ip=172.25.3.3 -itd --name=my-container busybox ## 仓库相关 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - -### 概述 - -总体概述了以下内容。 - ### 仓库、注册服务器、注册索引有何关系? 首先,仓库是存放一组关联镜像的集合,比如同一个应用的不同版本的镜像。 @@ -112,8 +100,6 @@ $ docker run --network=my-net --ip=172.25.3.3 -itd --name=my-container busybox ## 配置相关 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### Docker 的配置文件放在哪里,如何修改配置? 答:使用 `systemd` 的系统 (如 Ubuntu 22.04+、Debian 12+、Rocky/Alma/CentOS Stream 9+) 的配置文件在 `/etc/docker/daemon.json`。 @@ -151,8 +137,6 @@ lrwxrwxrwx. 1 root root 15 11月 17 13:43 docker -> /storage/docker ## Docker 与虚拟化 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### Docker 与 LXC 有何不同? 答:LXC 利用 Linux 上相关技术实现了容器。Docker 则在如下的几个方面进行了改进: @@ -182,8 +166,6 @@ lrwxrwxrwx. 1 root root 15 11月 17 13:43 docker -> /storage/docker ## 其它 -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### Docker 能在非 Linux 平台 (比如 Windows 或 macOS) 上运行么? 答:完全可以。安装方法请查看[安装 Docker](../../03_install/README.md) 一节 diff --git a/appendix/faq/errors.md b/appendix/faq/errors.md index 73112502e..267eaf4e7 100644 --- a/appendix/faq/errors.md +++ b/appendix/faq/errors.md @@ -1,7 +1,5 @@ ## 常见错误速查表 -相关信息如下表: - | 错误信息 / 现象 | 可能原因 | 解决方案 | | :--- | :--- | :--- | | `Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?` | Docker 服务未启动 | Linux: `sudo systemctl start docker`
Mac/Win: 启动 Docker Desktop | diff --git a/appendix/repo/centos.md b/appendix/repo/centos.md index 06c819901..4070f360d 100644 --- a/appendix/repo/centos.md +++ b/appendix/repo/centos.md @@ -1,7 +1,5 @@ ## [CentOS] -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 基本信息 [CentOS](https://en.wikipedia.org/wiki/CentOS) 是流行的 Linux 发行版,其软件包大多跟 RedHat 系列保持一致。 diff --git a/appendix/repo/mongodb.md b/appendix/repo/mongodb.md index e2e5c0ebc..2c363f911 100644 --- a/appendix/repo/mongodb.md +++ b/appendix/repo/mongodb.md @@ -1,7 +1,5 @@ ## [MongoDB] -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 基本信息 [MongoDB](https://en.wikipedia.org/wiki/MongoDB) 是开源的 NoSQL 数据库实现。 diff --git a/appendix/repo/mysql.md b/appendix/repo/mysql.md index 11fa2c1d5..bdad2843c 100644 --- a/appendix/repo/mysql.md +++ b/appendix/repo/mysql.md @@ -1,7 +1,5 @@ ## [MySQL] -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 基本信息 [MySQL](https://en.wikipedia.org/wiki/MySQL) 是开源的关系数据库实现。 diff --git a/appendix/repo/nginx.md b/appendix/repo/nginx.md index 2e894e4af..2c63478c7 100644 --- a/appendix/repo/nginx.md +++ b/appendix/repo/nginx.md @@ -1,7 +1,5 @@ ## [Nginx] -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 基本信息 [Nginx](https://en.wikipedia.org/wiki/Nginx) 是开源的高效的 Web 服务器实现,支持 HTTP、HTTPS、SMTP、POP3、IMAP 等协议。 diff --git a/appendix/repo/nodejs.md b/appendix/repo/nodejs.md index e22c9367f..0253bdd4c 100644 --- a/appendix/repo/nodejs.md +++ b/appendix/repo/nodejs.md @@ -1,7 +1,5 @@ ## [Node.js] -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 基本信息 [Node.js](https://en.wikipedia.org/wiki/Node.js) 是基于 JavaScript 的可扩展服务端和网络软件开发平台。 diff --git a/appendix/repo/php.md b/appendix/repo/php.md index 9f9570e8e..b76503ecc 100644 --- a/appendix/repo/php.md +++ b/appendix/repo/php.md @@ -1,7 +1,5 @@ ## [PHP] -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 基本信息 [PHP](https://en.wikipedia.org/wiki/Php) (Hypertext Preprocessor 超文本预处理器的字母缩写) 是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML 中,尤其适合 web 开发。 diff --git a/appendix/repo/redis.md b/appendix/repo/redis.md index 873d2b7ac..eaadb77b2 100644 --- a/appendix/repo/redis.md +++ b/appendix/repo/redis.md @@ -1,7 +1,5 @@ ## [Redis] -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 基本信息 [Redis](https://en.wikipedia.org/wiki/Redis) 是开源的内存 Key-Value 数据库实现。 diff --git a/appendix/repo/ubuntu.md b/appendix/repo/ubuntu.md index 3064c93ba..d9340c5d9 100644 --- a/appendix/repo/ubuntu.md +++ b/appendix/repo/ubuntu.md @@ -1,7 +1,5 @@ ## [Ubuntu] -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 基本信息 [Ubuntu](https://en.wikipedia.org/wiki/Ubuntu) 是流行的 Linux 发行版,其自带软件版本往往较新一些。 diff --git a/appendix/repo/wordpress.md b/appendix/repo/wordpress.md index 535f8445a..b0300827a 100644 --- a/appendix/repo/wordpress.md +++ b/appendix/repo/wordpress.md @@ -1,7 +1,5 @@ ## [WordPress] -本节涵盖了相关内容与详细描述,主要探讨以下几个方面: - ### 基本信息 [WordPress](https://en.wikipedia.org/wiki/WordPress) 是开源的 Blog 和内容管理系统框架,它基于 PHP 和 MySQL。