D

Docker 101:Docker GenAI 简介 LIVE! | 2025 年 6 月 4 日

2025-06-10

Docker 101:Docker 简介

GenAI LIVE! | 2025年6月4日

根据 Docker 官方文档,

Docker 是一个用于开发、发布和运行应用程序的开放平台。Docker 允许您将应用程序与基础架构分离,从而快速交付软件。使用 Docker,您可以像管理应用程序一样管理基础架构。

它是一个容器化平台,允许开发人员将程序打包到容器中。
它使用谷歌开发的 Go 语言编写。

简单来说,Docker 允许您将操作系统作为容器运行。

Twitter CTA

Docker 引擎

2020-05-12-16_36_49-PowerPoint-幻灯片放映-Azure_AZ104_M01_Compute_ed1-1-1024x599.png
Docker 引擎是 Docker 运行的层。它安装在主机上。它是一个轻量级的运行时和工具,用于管理容器、镜像、构建等。Docker 引擎充当客户端-服务器应用程序,具有以下功能:

  • 具有长期运行的守护进程 dockerd 的服务器。

  • Rest API 指定了程序可以用来与 Docker 守护进程通信和指示其的接口。

  • 命令行界面 (CLI) 客户端 docker。

Docker 架构

2020-05-12-16_37_26-PowerPoint-幻灯片放映-Azure_AZ104_M01_Compute_ed1-1024x534.png

Docker 架构由 5 个主要组件组成:

  1. Docker 客户端

  2. Docker 守护进程

  3. Docker 主机

  4. Docker 注册表

  5. Docker 对象

Docker 客户端

帮助用户与 Docker 交互。它使用命令和 REST API 与 Docker 守护进程通信。Docker 客户端提供了一个命令行界面 (CLI),允许用户运行和停止 Docker 守护进程的应用程序命令。

Docker 守护进程

它运行在主机的操作系统上。它通过监听 Docker API 请求来处理 Docker 对象,例如镜像、容器、网络和卷。它用于运行容器并管理 Docker 的服务。守护进程可以与其他守护进程通信以管理服务。它负责处理 Docker 容器的构建、执行和分发。

Docker 主机

它非常重要,因为没有它,用户就无法使用 Docker。它是一个可以执行和运行应用程序的环境。客户端发出的命令会被发送到 Docker 主机,然后由 Docker 守护进程接收。

Docker 注册表

Docker Registry 也称为 Docker Hub,是几乎所有技术栈的 Docker 镜像存储库,您可以在其中安装或提取镜像。

docker.PNG

Docker 对象

这些是我们在使用 Docker 时与之交互的内容,例如您使用图像、容器、卷、网络或插件。

  • Docker 镜像: Docker 镜像是只读模板,其中包含创建 Docker 容器的指令。您可以从 Docker Hub 拉取 Docker 镜像并直接使用,也可以在基础镜像中添加其他指令,创建一个新的、经过修改的 Docker 镜像。您也可以使用 dockerfile 创建自己的 Docker 镜像。

基础层是只读的,顶层是可写的。当你编辑dockerfile并重建时,只有修改的部分会在顶层重建。

  • Docker 容器: Docker 容器是隔离、打包且安全的应用程序环境,包含运行应用程序所需的所有包、库和依赖项。运行 Docker 镜像后,它会创建一个 Docker 容器。所有应用程序及其环境都在此容器内运行。您可以使用 Docker API 或 CLI 来启动、停止和删除 Docker 容器。

例如,如果您创建与 Ubuntu 镜像关联的容器,您将可以访问一个隔离的 Ubuntu 环境。您还可以访问此 Ubuntu 环境的 bash 并执行命令。

一个解释性的例子

假设我们想在 Docker 中拉取一个镜像,我们需要使用 Docker pull 命令(docker 命令之一),该命令会从客户端发送到 Docker 主机。Docker Daemon 负责接收此命令。它会检查 Docker 主机上包含的镜像中是否存在客户端请求拉取的镜像,如果不存在,则会从镜像仓库/docker hub 拉取/获取该镜像。它会将镜像检索到 Docker 主机中,并从中创建容器。

您可能会问为什么不使用虚拟机?

fdcb71e052fd45541320d36006bfceae.gif
我的意思是,虚拟机可以提供隔离的环境,它们可以用来打包和分发软件,这正是 Docker 容器的功能,而且它们也已经存在了一段时间,但我们为什么要选择 Docker 容器呢?我已经在本文中解释了容器和虚拟机之间的区别、使用容器的优势以及如何知道何时使用容器

Docker 的安装

Docker 可以安装在各种平台上:macOs、Windows 和 Linux。请参阅本文档获取正确指导。

基本 Docker 命令

  • docker build <path to docker file>
    该命令用于从指定的docker文件构建镜像

  • docker -version
    该命令用于获取当前安装的docker版本

  • docker run -it -d <image name>
    此命令用于从图像创建容器

  • docker ps
    此命令用于列出正在运行的容器

  • docker ps -a
    此命令用于显示所有正在运行和退出的容器

  • docker stop <container id>
    此命令停止正在运行的容器

  • docker kill <container id>
    此命令通过立即停止执行来终止容器

  • docker pull
    此命令用于从docker仓库拉取镜像

  • docker push <username/image name>
    此命令用于将镜像推送到docker hub仓库

  • Docker rmi <image-id>
    此命令用于从本地存储中删除图像

  • docker rm <container id>
    此命令用于删除已停止的容器

为什么选择 Docker?

隔离

Docker 确保您的应用程序和资源相互隔离。Docker 确保每个容器都拥有独立的资源,并与其他容器相互隔离。您可以为运行完全不同堆栈的独立应用程序创建不同的容器。无论应用程序部署在何处,一切都保持一致,从而大幅提高生产力:减少调试时间,将更多时间投入到为用户推出新功能上。

快速部署

Docker 容器以将部署时间缩短至数秒而闻名。这是因为它会为每个进程创建一个容器,并且无需启动操作系统。您可以轻松创建和销毁数据,而无需担心数据恢复的成本超出您的承受范围。

安全

Docker 确保容器上运行的应用程序彼此完全隔离,让您能够完全控制流量和管理。任何 Docker 容器都无法查看其他容器内运行的进程。从架构的角度来看,每个容器都拥有自己的一套资源,从处理到网络堆栈。

可扩展性

如果您的应用程序需要,您可以快速创建新的容器。使用多个容器时,您可以利用一系列容器管理选项。有关这些选项的更多信息,请参阅 Docker 文档。

尽管 Docker 有诸多优势,但它并不适合在容器中运行所有应用程序。尤其是,人们普遍认为,带有图形用户界面的应用程序并不适合与 Docker 一起使用。


我们在 Twitter 上分享更多 DevOps 内容。如果您喜欢,欢迎在 Twitter 上与我们成为好友👋。
Twitter CTA

在这里查看我们的 GitHub 仓库👇
GitHub 行动呼吁

鏂囩珷鏉ユ簮锛�https://dev.to/signoz/docker-101-introduction-to-docker-1kbm
PREV
Winston Logger - 带有示例 Nodejs 应用程序的完整教程
NEXT
Float UI:构建美观 Web 界面的 Tailwind UI 替代方案