2024年最新Docker是什么-看这一篇就够了,干了5年Golang开发还没掌握binder机制

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

例如,如果您有一个 Java jar 文件,则可以在任何安装了 java 的服务器上运行它。同样,使用 Docker 将包含所需应用程序的容器打包后,可以在安装了 Docker 的任何其他主机上运行它。

我们将通过执行一些Docker命令和参数来启动并运行容器。

1.1 Docker 和容器之间的区别

Docker 是一种为有效管理容器而开发的技术或工具。

那么,我可以在没有 Docker 的情况下运行容器吗?

是的!答案是肯定的。您可以使用 LXC 技术在 Linux 服务器上运行容器。此外,像 Podman 这样的最新工具提供了与 Docker 类似的工作流程。

关于 Docker 你应该知道的事情:
  1. Docker 不是 LXC
  2. Docker 不是虚拟机解决方案。
  3. Docker 不是配置管理系统,也不是 Chef、Puppet、Ansible 等的替代品。
  4. Docker 不是一种平台即服务技术。
  5. Docker 不是一个容器。

1.2 是什么让 Docker 如此出色?

Docker 具有高效的工作流,可将应用程序从开发人员的笔记本电脑移动到测试环境,再迁移到生产环境。当您查看将应用程序打包到 Docker 映像中的实际示例时,您将对它有更多了解。

您知道启动 docker 容器只需不到一秒钟的时间吗?

它的速度非常快,可以在任何具有兼容 Linux 内核的主机上运行。(也支持 Windows)

**注意:**您无法在 Linux 主机上运行 Windows 容器,因为 Windows 不支持 Linux 内核。您可以从此处阅读有关 Windows 容器的信息

Docker 使用写入时复制并集文件系统作为其映像存储。因此,当对容器进行更改时,只会使用写入模型上的副本将更改写入磁盘。

使用写入时复制,您将拥有所有容器的优化共享存储层。

1.3 Docker 采用统计

这是 Docker 上的谷歌趋势数据。你可以看到它在过去五年里一直是一个爆炸性的话题。

这是 Datadog 的调查结果,它显示了 Docker 采用率的上升。

来源: datadog.com

二、Docker 核心架构

以下部分将介绍 Docker 体系结构及其相关组件。我们还将研究每个组件如何协同工作以使 Docker 工作。

自成立以来,Docker 架构已经发生了几次变化。

以下是 Docker 发生的一些值得注意的架构更改

  1. Docker 在 2014 年从 LXC 迁移到 libcontainer
  2. runc – 用于启动符合所有 OCI 规范的容器的 CLI。
  3. containerd – Docker 在 2016 年将其容器管理组件分离到 containerd

OCI:Open Container Initiative 是容器运行时和规范的开放行业标准。

当 Docker 最初推出时,它有一个单体架构。现在它分为以下三个不同的组件。

  1. Docker 引擎 (dockerd)
  2. docker-containerd (容器)
  3. docker-runc (运行时)

Docker 和其他大型组织为标准的容器运行时和管理层做出了贡献。因此,现在是云原生基金会的一部分,贡献者来自所有组织。containerd``runc

**注意:**安装 Docker 时,将安装所有这些组件。您不必单独安装它。为了说明,我们将其显示为不同的组件。

Docker 核心架构

现在让我们看一下每个 Docker 组件。

2.1 Docker 引擎

Docker 引擎由 docker 守护程序、API 接口和 Docker CLI 组成。Docker 守护程序 (dockerd) 作为 systemd 服务持续运行。它负责构建 docker 映像。

若要管理映像和运行容器,请调用 API。dockerd``docker-containerd

2.2 docker-containerd (容器)

containerd是另一个系统守护程序服务,负责下载 docker 映像并将其作为容器运行。它公开其 API 以接收来自服务的指令dockerd

2.3 docker-runc

runc是负责创建容器所需的命名空间和 cgroup 的容器运行时。然后,它会在这些命名空间中运行容器命令。runc 运行时是按照 OCI 规范实现的。

阅读这篇由 3 部分组成的优秀博客文章系列,了解有关容器运行时的更多信息。

三、Docker 是如何工作的?

我们已经看到了 Docker 的核心构建块。

现在,让我们使用 Docker 组件来了解 Docker 工作流。

3.1 Docker 组件

以下官方高级 docker 架构图显示了常见的 Docker 工作流。

图片来源:docs.docker.com

Docker 生态系统由以下四个组件组成

  1. Docker 守护程序 (dockerd)
  2. Docker 客户端
  3. Docker 镜像
  4. Docker 注册表
  5. Docker 容器
3.2 什么是 Docker 守护程序?

Docker 具有客户端-服务器体系结构。Docker Daemon () 或服务器负责与容器相关的所有操作。dockerd

守护程序通过 CLI 或 REST API 从 Docker 客户端接收命令。Docker 客户端可以与守护程序位于同一主机上,也可以存在于任何其他主机上。

缺省情况下,docker 守护程序侦听 UNIX 套接字。如果您有任何远程访问 docker API 的用例,则需要通过主机端口公开它。其中一个用例是将 Docker 作为 Jenkins 代理运行docker.sock

如果要在 Docker 中运行 Docker,可以从主机使用 Docker。docker.sock

3.3 什么是 Docker 镜像?

镜像是 Docker 的基本构建块。它包含用于运行应用程序的操作系统库、依赖项和工具。

可以使用应用程序依赖项预生成映像,以创建容器。例如,如果要将 Nginx Web 服务器作为 Ubuntu 容器运行,则需要使用 Nginx 二进制文件和运行 Nginx 所需的所有操作系统库创建一个 Docker 映像。

3.4 什么是 Dockerfile?

Docker 有一个用于构建映像的概念。Dockerfile:每行包含一个命令(指令)的文本文件。Dockerfile

下面是 Dockerfile 的示例。

示例 Dockerfile 引用

docker 映像以分层方式组织。a 上的每条指令都会在图像中添加一个图层。映像的最顶层是容器。Dockerfile

每个映像都是从基础映像创建的。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

[外链图片转存中…(img-1VS1FZUd-1715736336996)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值