前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Docker极简教程》--Docker基础--基础知识(二)

《Docker极简教程》--Docker基础--基础知识(二)

作者头像
喵叔
发布2024-05-24 14:43:45
940
发布2024-05-24 14:43:45
举报
文章被收录于专栏:喵叔's 专栏
一、Docker引擎
1.1 Docker引擎的组成和功能

Docker 引擎是 Docker 平台的核心组件,它负责容器的创建、管理和运行。Docker 引擎主要包括两个主要组件:Docker 守护程序(Docker Daemon)和 Docker 客户端(Docker Client)。以下是它们的主要功能和作用:

  1. Docker 守护程序(Docker Daemon):
    • 功能:
      • 容器管理:负责创建、运行、停止和删除容器。
      • 镜像管理:处理容器镜像的构建、存储和分发。
      • 资源管理:控制容器对主机系统资源的访问,例如 CPU、内存、磁盘和网络。
      • 日志和事件:负责记录容器的日志和监控容器的事件。
      • 安全性:提供容器的隔离和安全性,包括命名空间、控制组等技术。
    • 运行方式:
      • 作为一个后台服务在主机上运行,监听来自 Docker 客户端的 API 请求。
    • 通信方式:
      • 提供一个 REST API,Docker 客户端通过该 API 与 Docker 守护程序通信。
  2. Docker 客户端(Docker Client):
    • 功能:
      • 提供用户与 Docker 引擎交互的命令行界面或 API。
      • 允许用户通过命令或 API 请求 Docker 守护程序执行相应的操作。
    • 运行方式:
      • 可以在同一主机上运行,也可以连接到远程主机上运行的 Docker 守护程序。
    • 通信方式:
      • 通过 REST API 与 Docker 守护程序通信,向它发送命令和接收执行结果。
1.2 Docker引擎的工作流程

Docker 引擎的工作流程是,用户通过 Docker 客户端发送命令,Docker 客户端将命令转发给 Docker 守护程序,然后 Docker 守护程序执行相应的操作,如创建、运行或停止容器,构建或拉取镜像等。这种架构使得 Docker 能够提供轻量级、可移植、可扩展的容器化解决方案。以下是具体流程: Docker 引擎的工作流程包括用户与 Docker 客户端交互、Docker 客户端与 Docker 守护程序通信、以及 Docker 守护程序执行相应的操作。以下是 Docker 引擎的基本工作流程:

  1. 用户与 Docker 客户端交互:
    • 用户通过命令行界面或 API 使用 Docker 客户端。
    • Docker 客户端接收用户的命令,例如创建容器、构建镜像等。
  2. Docker 客户端与 Docker 守护程序通信:
    • Docker 客户端通过 REST API 或本地的 UNIX 套接字与 Docker 守护程序通信。
    • 如果 Docker 客户端与 Docker 守护程序运行在同一主机上,则通常通过 UNIX 套接字进行通信。如果 Docker 客户端与 Docker 守护程序运行在不同主机上,则可以通过网络进行通信。
  3. Docker 守护程序处理请求:
    • Docker 守护程序接收到来自 Docker 客户端的请求。
    • 守护程序根据请求的类型执行相应的操作,例如创建、运行、停止容器,构建或拉取镜像等。
    • 在执行这些操作之前,守护程序可能会检查本地是否存在所需的容器镜像,如果不存在,可能会从远程仓库中拉取镜像。
  4. 容器的创建和运行:
    • 如果用户请求创建容器,Docker 守护程序将使用指定的容器镜像创建一个新的容器实例。
    • 守护程序配置容器的运行时环境,包括网络设置、存储卷挂载等。
    • 启动容器进程,使其在隔离的环境中运行。
  5. 执行操作并返回结果:
    • Docker 守护程序执行相应的操作,例如容器的创建、运行、停止、删除,或者镜像的构建、推送、拉取等。
    • 执行结果和相关的日志信息通过 REST API 或其他适当的通信方式返回给 Docker 客户端。

整个流程的关键是 Docker 客户端与 Docker 守护程序之间的通信,以及守护程序的能力去创建、管理、运行容器。这种架构使得 Docker 提供了一种轻量级、可移植、可扩展的容器化解决方案,使应用程序可以在不同的环境中一致地运行。

二、Docker客户端和服务器
2.1 客户端与服务器的交互

Docker 客户端与服务器之间的交互是通过 Docker 的 REST API 进行的。Docker 客户端向 Docker 守护程序发送请求,而守护程序则响应这些请求,并执行相应的操作。以下是 Docker 客户端和服务器之间交互的主要步骤:

  1. Docker 客户端发送请求:
    • 用户在 Docker 客户端上运行命令,例如 docker rundocker build 等。
    • Docker 客户端将这些命令转化为相应的 REST API 请求。
  2. REST API 请求的结构:
    • REST API 请求通常包括 HTTP 方法(如 GET、POST、PUT、DELETE 等)、资源路径、请求头和请求体(如果有的话)。
    • 例如,创建一个容器的请求可能包括创建容器的参数、镜像名称等信息。
  3. 请求传递给 Docker 守护程序:
    • Docker 客户端通过网络或本地 UNIX 套接字将请求传递给正在运行的 Docker 守护程序。
    • 如果 Docker 客户端和守护程序在同一主机上,则通常使用本地 UNIX 套接字;如果它们在不同主机上,则可以通过网络进行通信。
  4. Docker 守护程序处理请求:
    • Docker 守护程序接收到 REST API 请求后,根据请求的内容执行相应的操作。
    • 守护程序可能会创建、运行、停止容器,构建或拉取镜像等,具体操作取决于请求的类型。
  5. 执行结果返回给 Docker 客户端:
    • Docker 守护程序执行请求对应的操作,并将执行结果、日志信息等通过 HTTP 响应返回给 Docker 客户端。
    • 响应包括状态码、响应头和响应体。
  6. Docker 客户端处理响应:
    • Docker 客户端接收到来自 Docker 守护程序的响应后,根据响应的状态码和内容进行相应的处理。
    • 如果请求成功,客户端可能会显示成功信息;如果有错误,客户端会显示错误信息。

通过这种方式,Docker 客户端和服务器之间实现了通过 REST API 的通信,使得用户可以方便地通过命令行或 API 与 Docker 守护程序交互,管理容器和镜像。

2.2 命令行工具的使用

Docker 提供了一个命令行工具,即 Docker 命令行客户端(Docker CLI),用于与 Docker 引擎进行交互。以下是一些常用的 Docker 命令,可以通过命令行工具执行这些操作:

镜像操作:

构建镜像:

代码语言:javascript
复制
docker build -t <image_name>:<tag> <path_to_dockerfile>

拉取镜像:

代码语言:javascript
复制
docker pull <image_name>:<tag>

查看本地镜像列表:

代码语言:javascript
复制
docker images

容器操作:

运行容器:

代码语言:javascript
复制
docker run -d --name <container_name> <image_name>:<tag>

查看运行中的容器:

代码语言:javascript
复制
docker ps

查看所有容器(包括停止的):

代码语言:javascript
复制
docker ps -a

停止容器:

代码语言:javascript
复制
docker stop <container_id or container_name>

删除容器:

代码语言:javascript
复制
docker rm <container_id or container_name>

日志和信息:

查看容器日志:

代码语言:javascript
复制
docker logs <container_id or container_name>

查看容器详细信息:

代码语言:javascript
复制
docker inspect <container_id or container_name>

网络操作:

查看网络列表:

代码语言:javascript
复制
docker network ls

创建网络:

代码语言:javascript
复制
docker network create <network_name>

其他操作:

进入运行中的容器:

代码语言:javascript
复制
docker exec -it <container_id or container_name> /bin/bash

查看 Docker 版本信息:

代码语言:javascript
复制
docker version

这些命令提供了一些基本的 Docker 操作,但 Docker CLI 支持的功能远不止这些。你可以通过运行 docker --help 或者 docker COMMAND --help 来获取更多命令和选项的详细信息。在使用 Docker 命令行工具时,可以根据实际需求选择合适的命令来构建、运行、管理容器和镜像。

三、总结

Docker 引擎是一种容器化解决方案,由 Docker 客户端和守护程序组成。用户通过 Docker 客户端向守护程序发送命令,两者之间通过 REST API 通信。守护程序负责管理容器的创建、运行、停止,以及镜像的构建和存储。Docker 客户端提供命令行界面或 API,用户通过它与守护程序交互。整个流程实现了轻量级、可移植的容器化,使应用程序在不同环境中一致运行。常用命令行工具包括构建镜像、运行容器、查看日志等,通过这些命令,用户能够方便地管理 Docker 容器和镜像。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Docker引擎
    • 1.1 Docker引擎的组成和功能
      • 1.2 Docker引擎的工作流程
      • 二、Docker客户端和服务器
        • 2.1 客户端与服务器的交互
          • 2.2 命令行工具的使用
          • 三、总结
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档