ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

90DaysOfDevOps 实战:Docker 镜像与 Docker Desktop 从零上手(Day 44)

90DaysOfDevOps 实战:Docker 镜像与 Docker Desktop 从零上手(Day 44) 文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载导读本文是 90DaysOfDevOps 容器学习路径中的实战入门课在完成 Docker 安装Day 43 之后我们将亲手把 Docker 镜像部署到本地环境走通注册中心选镜像 → Docker Desktop 管理 → 命令行拉取运行 → 进入容器交互的完整链路。读完本文你将掌握 Docker 镜像的本质概念、DockerHub 的官方镜像与验证发布者机制、Docker Desktop 各功能面板的用途并能独立运行docker/getting-started、hello-world与交互式ubuntu容器为后续编写 Dockerfile、构建并推送自定义镜像打下坚实基础。一、先复习什么是 Docker 镜像在动手之前先明确一个核心概念本系列反复强调正是因为它是后续一切的起点Docker 镜像Image是一个用于在 Docker 容器中执行代码的文件。它像模板一样充当一组构建指令Docker 依据它来创建容器同时它也是任何人使用 Docker 时的起点。可以这样理解镜像 只读模板包含应用代码、运行时、依赖与配置容器 镜像的运行实例Docker 启动容器时会在镜像之上增加一个可写层容器层容器生命周期内的所有变更都保存在这一层因此多个容器可以共享同一个底层镜像却拥有各自独立的状态分层构建镜像由一层层文件叠加而成每一层都依赖其下一层。变更频繁的内容应尽量放在靠上的层因为修改某一层时Docker 不仅要重建该层还会重建其之上的所有层此细节在 Day 45Docker 镜像的解剖 中会展开讲解。明确了镜像—容器—层这三者关系后我们今天的实战就围绕把镜像拉下来并跑起来展开。二、DockerHub镜像的集中注册中心现在正是注册 DockerHub 账号的好时机首次使用 Docker 的用户应完成这一步因为后续拉取与推送镜像都以账号为基础。DockerHub 是使用 Docker 及其组件时的集中式资源最常见的身份是托管 Docker 镜像的注册中心registry但除此之外它还提供大量附加服务例如对接自动化流程集成 GitHub 等代码平台内置安全扫描能力。登录后向下滚动会看到一批常用容器镜像的列表例如 MySQL 等数据库镜像、hello-world镜像等。可以把这些视为优质的基线镜像baseline images如果你只需要一个数据库镜像直接使用官方镜像通常是最好的选择完全不必从零构建自己的镜像。2.1 如何甄别镜像来源Official Image 与 Verified PublisherDockerHub 支持按类别、操作系统与 CPU 架构深入筛选可用镜像。在挑选镜像时有两个标记需要重点关注它们直接关系到镜像来源的可信度标记含义Official Image官方镜像Docker 官方精选的一组开源且开箱即用的解决方案仓库可对镜像来源感到放心Verified Publisher验证发布者由经过验证的机构发布并维护的高质量 Docker 内容由商业实体直接公开发布与维护在页面顶部还可以搜索特定镜像例如 WordPress 可能就是我们想要的基础镜像——输入关键词后即可找到所有与 WordPress 相关的容器镜像列表中同样会标注上述两种可信标记。搜索、筛选、甄别来源是从 DockerHub 获取镜像的基本功。三、探索 Docker Desktop界面与功能面板前提系统已安装 Docker Desktop并已确认 Docker 引擎Engine正在运行。如果你使用的是 Linux同样可以运行 Docker只是没有图形界面GUI可通过安装 Docker Engine 的方式使用对应文档中提到的 Ubuntu 等发行版安装路径。打开 Docker Desktop 应用你会看到类似下面的界面当前没有任何容器在运行但Docker Engine 处于运行状态。各面板的用途如下面板用途Containers / Apps查看与操作本机所有容器运行中、已退出等查看日志、进入终端、在浏览器打开应用端口等Images查看本机已下载或正在使用的所有镜像例如docker/getting-started、hello-worldRemote repositories查看你在 DockerHub 上托管的远程仓库若从未推送过镜像这里为空Volumes管理卷Volume。当容器需要持久化数据时可将卷挂载到本机文件系统或共享文件系统避免容器删除后数据丢失Dev Environments用于与团队协作的开发环境替代在不同 git 分支间切换本系列不展开讲解第一次安装时Images 面板通常为空作者因非全新安装已存在部分历史镜像。在 DockerHub 网页端同样可以核对尚未推送任何镜像时仓库列表为空——Docker Desktop 的 Remote repositories 与 DockerHub 网页保持同步。四、运行第一个容器docker/getting-started回到 Containers / Apps 面板文档给出了一个可以立即运行的入门容器命令。在终端中执行docker run -d -p 80:80 docker/getting-started逐段拆解这条命令docker run从镜像创建并启动容器-d以分离模式detached在后台运行终端不会被容器进程占用-p 80:80端口映射将宿主机的 80 端口映射到容器内的 80 端口格式为宿主机端口:容器端口docker/getting-started要运行的镜像名称本地不存在时 Docker 会自动从 DockerHub 拉取。执行后回到 Docker Desktop 窗口可以看到一个正在运行的容器running。此时再切换到 Images 面板会看到一个正在被使用的镜像docker/getting-started。关于 WSL2文中运行环境为 Windows WSL2。若要在 WSL2 下使用 Docker需要确保在 Docker Desktop 设置中已启用 WSL2 集成选项Settings 中对应的开关。在 Containers / Apps 面板中点击这个运行中的容器默认会看到容器日志logs面板顶部的工具栏还提供多个操作选项。由于该容器内运行的是一个网页应用选择在浏览器中打开open in browser浏览器就会访问 localhost 并展示 Docker 官方的入门引导页面容器详情中还包含关于容器与镜像的更多信息。至此你已经成功运行了第一个容器——第一步并不复杂。五、从 DockerHub 拉取并运行 hello-world为了演示从注册中心拉取镜像这一典型流程先停止并清理掉getting-started容器并非因为它占用大量资源而是为了让后续步骤更清晰。然后在终端执行docker run hello-world发生了什么过程一目了然本机没有hello-world镜像Docker 自动从 DockerHub 将其**拉取pull**到本地容器启动后输出一段欢迎消息内容包括它是如何完成启动的说明以及若干参考链接消息输出完毕后容器即退出。回到 Docker Desktop可以看到没有运行中的容器但有一个exited已退出的容器——它出现 → 发送消息 → 终止完整演示了一个一次性任务容器的生命周期。最后再查看 Images 面板本地多了一个hello-world镜像。这意味着如果再次执行docker run hello-world只要版本没有变化就无需重新拉取直接从本地启动。这个小实验展示了 Docker 镜像缓存机制本地已有镜像时直接使用缺失时才从注册中心拉取。六、挑战升级交互式运行 Ubuntu 容器hello-world容器在欢迎消息中留下了一个挑战运行一个更有野心的东西。接受挑战——在终端执行docker run -it ubuntu bash命令要点-i保持标准输入stdin打开允许向容器输入命令-t分配一个伪终端pseudo-TTY获得可交互的命令行ubuntu基础镜像名称未指定 tag 时默认拉取latest标签bash容器启动后要执行的命令即启动 bash shell。执行后终端会进入一个交互式提示符interactive prompt你已经在容器内部的 bash shell 中了。注意一个重要事实这是Ubuntu 的容器化版本并非操作系统的完整副本——容器里只有一个精简的 Linux 用户空间。尽管只有一个 bash shell这个基础镜像小于 30MB这正是镜像是精简模板而非完整操作系统的最佳佐证但它完全可用。你可以借助apt包管理器在容器内安装软件、更新与升级apt-get update apt-get upgrade -y也可以安装具体软件。文中示例安装的是pinta一个图像编辑器体积超过 200MB作者自己也承认这不是最轻量的例子目的是说明在容器内安装软件会显著增大容器的体积——不过即使如此容器体量仍在 MB 级而非 GB 级。需要清醒认识的一点这种进入容器手动装软件的方式适合体验与排查问题但它不具备可重复性——容器一旦停止或被销毁所有手工安装的软件与更新都会丢失。要获得每次运行都具备相同软件集的可移植镜像正确做法是使用 Dockerfile 构建镜像这正是 Day 45 的主题。七、延伸仓库中的镜像与编排示例作为从拉取运行现成镜像走向构建与部署自建镜像的过渡当前仓库的 2022/Days/Containers 目录下已经准备好了若干可供后续练习的真实示例建议结合下一篇阅读基础 Dockerfile 示例2022/Days/Containers/Dockerfile 以ubuntu:18.04为基础镜像先执行apt-get update apt-get upgrade -y更新系统再创建非 root 用户basicuser并切换到该用户运行——体现了精简、无冗余、最小权限的镜像构建思路WordPress MySQL 编排示例2022/Days/Containers/my_wordpress/docker-compose.yaml 用mysql:5.7与wordpress:latest两个镜像定义db与wordpress两个服务并通过命名卷db_data、wordpress_data持久化数据、通过端口映射8000:80对外暴露服务——这正是本文提到的 MySQL、WordPress 官方镜像的落地用法ELK 三容器编排示例2022/Days/Containers/elasticsearch-logstash-kibana/docker-compose.yml 以elasticsearch:7.16.1、logstash:7.16.1、kibana:7.16.1三个官方镜像组合成单节点日志分析栈包含健康检查healthcheck、端口映射与自定义 bridge 网络。这些文件在后续构建镜像、推送到 DockerHub 并部署的章节中会被反复引用。八、小结与下一步通过本节你已经完成了理解 Docker 镜像作为只读模板 构建指令的本质认识 DockerHub 注册中心学会借助 Official Image 与 Verified Publisher 甄别镜像来源熟悉 Docker Desktop 的 Containers/Apps、Images、Volumes、Remote repositories 等面板实战运行docker/getting-started后台 端口映射 浏览器访问与hello-world自动拉取 一次性容器生命周期通过docker run -it ubuntu bash进入容器交互环境并用apt安装软件。需要认识到仅下载镜像并使用远不是容器世界的全部网络、安全以及更多部署选项都将在后续内容中展开。本节的最终目标是构建出属于自己的东西上传到 DockerHub 仓库并成功部署——这也是容器实战的主线任务。下一篇 Day 45Docker 镜像的解剖 将深入镜像的内部结构、Dockerfile 指令与镜像构建方法敬请继续。赞分享文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载相关推荐90DaysOfDevOps 第 44 天Docker 镜像实战与 Docker Desktop 上手90DaysOfDevOps 第 44 天Docker 镜像实战与 Docker Desktop 上手 本篇是 90DaysOfDevOps 容器学习路线中文档/教程90DaysOfDevOps 第 44 天Docker 镜像详解与 Docker Desktop 上手实战90DaysOfDevOps 第 44 天Docker 镜像详解与 Docker Desktop 上手实战 本篇指南对应 90DaysOfDevOps 项目文档/教程90DaysOfDevOps 实战 Day 44Docker 镜像入门与 Docker Desktop 首次动手运行容器90DaysOfDevOps 实战 Day 44Docker 镜像入门与 Docker Desktop 首次动手运行容器 Docker 镜像是容器技术的基石文档/教程上一篇PaddleSpeech Multi-CN 全量中文语料整合方案OpenSLR 多数据集联合训练中文语音识别模型下一篇Presto 0.128 版本发布详解Worker 优雅停机Graceful Shutdown与关键修复创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表