
云原生DevOps【免费下载链接】docker-curriculum:dolphin: A comprehensive tutorial on getting started with Docker!项目地址https://gitcode.com/gh_mirrors/do/docker-curriculum点击查看免费下载本篇是 docker-curriculum 教程 Hello World 章节的核心篇目围绕最小 Linux 发行版 Busybox 展开完整演示从镜像仓库拉取镜像、用docker run创建并运行容器、进入交互式 shell、验证容器隔离特性再到清理容器与镜像的完整闭环。读完本文你将能独立解释 Docker 中镜像与容器的关系熟练使用docker pull、docker run、docker ps、docker rm等高频命令并为后续编写 Dockerfile、编排多容器应用打下基础。章节定位Hello World 在课程中的角色在 docker-curriculum 的 Starlight 站点中侧边栏将整个课程组织为 Introduction、Getting Started、Hello World、Webapps with Docker、Multi-Container Environments、Modern Docker、Conclusion 共七个章节见 starlight/astro.config.mjs 的sidebar配置其中hello-world目录通过autogenerate自动纳入导航。Hello World 章节由四个文档构成00-busybox.md拉取 Busybox 镜像初识docker pull本文讲解的文档本体01-docker-run.md深入docker run的多种用法02-terminlogy.md梳理镜像、容器、守护进程、客户端、镜像仓库等术语03-quiz.mdx以四道选择题检验本章掌握程度。进入本章之前你应已完成 Getting Started 章节的环境搭建。该章节在 00-getting-started.md 中说明本教程基于 Docker18.05.0-ce编写并要求读者具备基本的命令行与文本编辑器使用能力。前置准备确保 Docker 引擎就绪动手之前先确认 Docker 已经正确安装并运行。02-setting-up.md 建议直接使用 Docker DesktopWindows 上默认以 WSL 2 作为后端Mac 上也可选用 OrbStack 等轻量替代品安装完成后在终端执行验证命令$ docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly. ...看到这段输出即说明 Docker 客户端能够与守护进程正常通信。如果你尚未搭建本地环境也可以直接在 GitHub Codespaces 中基于仓库配置的 devcontainer 启动一个预装 Docker 的云端开发环境在浏览器终端里完成本章所有实验。权限问题提示根据安装方式的不同运行 docker 命令时可能遇到permission denied错误。Mac 用户请确认 Docker 引擎已启动Linux 用户可以在命令前加sudo更推荐的做法是按照 Docker 官方文档创建docker用户组将当前用户加入该组后重新登录即可免去sudo前缀。第一步docker pull 拉取 Busybox 镜像环境就绪后第一条命令就是拉取镜像$ docker pull busyboxpull命令从Docker registry镜像仓库中抓取busyboximage镜像并保存到本地系统。你可以把 registry 理解成所有公开 Docker 镜像的目录其中最著名的公共仓库就是 Docker Hub。镜像下载完成后用docker images查看本地已有哪些镜像$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE busybox latest c51f86c28340 4 weeks ago 1.109 MB输出中的列含义如下列含义REPOSITORY镜像所属的仓库名即镜像的来源标识TAG镜像的特定版本快照标签未指定时默认取latestIMAGE ID该镜像的唯一标识符CREATED镜像构建/发布的时间VIRTUAL SIZE镜像的虚拟大小注意 Busybox 镜像只有1.109 MB左右——它把常用 Unix 工具压缩成一个可执行文件是体验极简镜像 极速启动的绝佳样本。关于镜像的更多细节如 base/child 镜像、官方/用户镜像、TAG的作用会在 Webapps with Docker 章节 中深入展开本章只需建立镜像 应用蓝图的直觉即可。术语速览镜像、容器、守护进程与客户端在继续之前先厘清 Docker 生态中五个高频术语完整条目见 02-terminlogy.mdImages镜像应用的蓝图是容器的构成基础。上面的docker pull下载的就是busybox镜像。Containers容器由镜像创建而来运行实际的应用。我们用docker run基于已下载的 busybox 镜像创建容器用docker ps查看运行中的容器列表。Docker Daemon守护进程运行在宿主机上的后台服务负责构建、运行和分发 Docker 容器是客户端通信的对象。Docker Client客户端允许用户与守护进程交互的命令行工具广义上客户端也可以是 Kitematic 这类 GUI 工具。Docker Hub镜像仓库Docker 镜像的注册中心可视为所有可用镜像的目录你也可以自建私有 registry 并从中拉取镜像。理解这套客户端 → 守护进程 → 镜像/容器的架构是读懂后面所有命令的前提。第二步docker run 运行第一个容器现在基于镜像运行一个容器$ docker run busybox $命令执行后似乎什么都没发生——这不是 bug。run的完整流程是Docker 客户端找到指定镜像这里是 busybox→ 加载并创建容器 → 在容器内执行一条命令。由于我们没有提供命令容器启动后执行了空命令随即退出。虽然无聊但这恰恰揭示了容器是一次性的进程执行环境这一本质。给它一个命令试试$ docker run busybox echo hello from busybox hello from busybox这次 Docker 客户端忠实地在 busybox 容器内执行了echo命令并输出结果随后容器退出。整个过程几乎瞬间完成——如果换成一台虚拟机从启动、执行命令到销毁将是完全不同的时间尺度。这正是容器快的原因它们共享宿主内核、没有硬件虚拟化开销相关背景可参见 01-what-are-containers.md 中容器与虚拟机的对比。docker ps观察容器状态用docker ps查看当前正在运行的容器$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES由于所有容器都已退出输出为空。加上-a参数则列出包括已退出在内的全部容器$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 305297d7a235 busybox uptime 11 minutes ago Exited (0) 11 minutes ago distracted_goldstine ff0a5c3750b9 busybox sh 12 minutes ago Exited (0) 12 minutes ago elated_ramanujan 14e5bd11d164 hello-world /hello 2 minutes ago Exited (0) 2 minutes ago thirsty_euclid这张表展示了我们运行过的所有容器。注意STATUS列中的Exited (0)括号里的0是容器主进程的退出码0表示正常退出同时 Docker 会为每个容器自动生成一个随机的英文名字如distracted_goldstine也支持用--name自定义。交互式会话docker run -it busybox sh单条命令的容器还不够过瘾试试一次进入容器内部连续执行多条命令$ docker run -it busybox sh / # ls bin dev etc home proc root sys tmp usr var / # uptime 05:45:21 up 5:58, 0 users, load average: 0.00, 0.01, 0.04-i保持标准输入打开-t为容器分配一个伪终端tty两者结合让你获得一个可交互的 shell 提示符/ #。现在你可以在容器内任意执行命令——注意/ #提示符表明你位于容器文件系统的根目录ls列出的正是 Busybox 精简过的目录结构uptime查看的是容器内的时间与负载。不妨花点时间试试你熟悉的命令。容器隔离与临时状态眼见为实的实验在交互式 shell 中做一个验证容器隔离特性的实验/ # touch my_test_file.txt / # ls创建文件后输入exit退出容器再启动一个全新的容器$ docker run -it busybox sh / # ls你会发现my_test_file.txt消失得无影无踪。原因在于Docker 每次都会创建全新的、相互隔离的容器实例容器内的文件系统是临时ephemeral的任何在容器实例内做出的改动既不会影响宿主机也不会带入后续创建的容器。若想持久化数据需要在后续章节学习 volume 挂载等机制。探索 docker run从 --help 出发docker run很可能成为你日后使用频率最高的命令值得花时间熟悉它。运行docker run --help可以看到它支持的全部标志flag包括-d后台运行、-p端口映射、-v挂载卷等。随着课程推进后续章节会逐一介绍这些变体——例如 Webapps with Docker 章节会用-p把容器端口暴露给宿主机。清理容器与镜像的回收前面通过docker ps -a看到容器退出后仍会残留记录。随着教程推进你反复执行docker run这些游荡的容器会逐渐占用磁盘空间因此用完即清理是良好的习惯。按 ID 删除单个/多个容器把docker ps -a输出的容器 ID 直接跟在docker rm后面$ docker rm 305297d7a235 ff0a5c3750b9 305297d7a235 ff0a5c3750b9删除成功后被删除容器的 ID 会回显到终端。批量过滤删除已退出容器Linux/macOS利用命令替换把所有处于 exited 状态的容器 ID 一次性传给docker rm$ docker rm $(docker ps -a -q -f statusexited)其中-q只输出容器 ID、-f statusexited按状态过滤。需要留意的是$(...)命令替换语法在不同操作系统上并不通用例如 Windows PowerShell 就有差异。跨平台推荐docker container prune。在现代 Docker 版本中清理已停止容器有更统一、更安全的方式$ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: 4a7f7eebae0f63178aff7eb0aa39f0627a203ab2df258c1a00b456cf20063 f98f9c2aa1eaf727e4ec9c0283bcaa4762fbdba7f26191f26c97f64090360 Total reclaimed space: 212 B命令会先显示警告并要求确认默认y/N删除完成后报告释放的磁盘空间。一次性容器利器--rm 标志。给docker run加上--rm容器一旦退出就会被自动删除非常适合跑完即弃的临时任务避免产生残留$ docker run --rm busybox echo hello from busybox删除镜像docker rmi。如果某些镜像不再需要可以用docker rmi 镜像名或ID将其从本地移除。仓库源码佐证章节测验与站点配置本章的知识点通过 03-quiz.mdx 中的四道交互题得到强化其渲染由仓库内的 Quiz.astro 组件实现组件把题目数据序列化到data-questions属性前端脚本在用户点击选项后即时判定正误、高亮正确选项、展示解释并在全部答完后给出得分与评语同时支持 Reset Quiz 重新作答。四道题的核心考点恰好对应本章要点镜像与容器的关系镜像是不可变、包含代码与库的蓝图只读模板容器是由镜像实例化出的可运行实例。下载镜像的正确命令docker pull busybox从远程 registry 抓取镜像并存入本地缓存而不执行它。容器隔离与临时文件系统容器是隔离的全新实例未挂载到 volume 的改动不会在新容器中留存。自动清理标志--rm让容器退出时自动删除实例及其临时文件系统防止磁盘堆积。此外从 index.mdx 的主页文案可以看出本课程的完整路径正是从以docker run起步开始依次经历 Dockerfile、Flask Elasticsearch 的 Compose 编排最终部署到 AWS——本章的 Busybox 实验就是这条路径的第一步。小结与下一步本章通过一个不足 2 MB 的 Busybox 镜像完成了 Docker 入门最重要的一次闭环docker pull拉取镜像、docker run运行容器、docker ps观察状态、-it进入交互式 shell 并亲手验证容器隔离与临时状态最后用docker rm/docker container prune/--rm完成清理。这套拉取—运行—观察—清理的节奏将贯穿整个课程。接下来你可以继续阅读 01-docker-run.md 深化docker run的细节在 02-terminlogy.md 复习术语并用 03-quiz.mdx 自测然后进入 Webapps with Docker 章节尝试构建属于你自己的第一个镜像。赞分享云原生DevOps【免费下载链接】docker-curriculum:dolphin: A comprehensive tutorial on getting started with Docker!项目地址https://gitcode.com/gh_mirrors/do/docker-curriculum点击查看免费下载相关推荐Docker Run 实战指南从 busybox 容器入门 docker-curriculum 核心命令Docker Run 实战指南从 busybox 容器入门 docker curriculum 核心命令 本篇技术指南以 docker curriculum云原生DevOpsDocker Cheat Sheet容器生命周期管理命令全集Docker Cheat Sheet容器生命周期管理命令全集 快速掌握Docker容器管理的终极指南 无论你是初学者还是有经验的开发者这份完整的Doc教程Bats中的Docker容器测试验证容器生命周期管理Bats中的Docker容器测试验证容器生命周期管理 你还在手动检查Docker容器状态吗部署失败、资源泄漏、状态异常等问题是否频繁困扰你的运维工作本文将测试上一篇5分钟免费搞定用Rufus制作可启动U盘下一篇告别电池焦虑AlDente-Charge-Limiter让MacBook Pro触控栏焕发新功能创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考