architecture

参见官方文档:

Untitled

<aside> 💡 - By default, the Docker daemon listens for connections on a Unix socket to accept requests from local clients.

</aside>

docker.sock

之前不太理解为啥docker要监听在: /run/docker.sock 这个地址上? 对uds有了完整的实践与测试之后, 对此有了透彻的认知.

从而也理解了为啥 如何创建Logtail配置并以DaemonSet方式采集容器文本日志\_日志服务(SLS)-阿里云帮助中心 中, 需要按照 Logtail通过/run/docker.sock访问Docker,请确保该路径存在且具备访问权限。 方式来收集日志.

image build

镜像构建流程

Docker 镜像构建实际上是在 Docker 守护进程(Docker Daemon)上执行的。当你运行 docker build 命令时,构建过程中的所有操作都是由 Docker 守护进程在服务器的沙箱环境中进行的。这个沙箱环境被称作构建上下文(build context)。

这里有一些详细步骤:

  1. 构建上下文(Build Context)传递: 当你执行 docker build 命令时,当前目录(或你指定的上下文目录)下的所有内容都会被发送给 Docker 守护进程。这就是为什么通常在最后加上一个点 . 来指定当前目录作为上下文。上下文中包含了 Dockerfile 和所有可能被 Dockerfile 中的指令(如 COPY, ADD)引用的文件和目录。
  2. 构建过程: Docker 守护进程接收到构建上下文后,会开始解析 Dockerfile 并逐步执行里面的指令。每执行一个指令,实际上 Docker 守护进程都会创建一个临时的容器来运行这些指令,并捕获其变更作为新的镜像层。当执行完成后,这个临时容器会被删除,但是新的镜像层会被保留。—> 在执行COPY命令时,Docker不会创建一个临时的容器来执行这条命令。 Docker在处理不同类型的Dockerfile指令时,采用不同的策略:
  1. 镜像层的创建: 每个 Dockerfile 指令都可能创建一个新的镜像层。例如,RUN 指令会运行一条命令并创建一个新层,COPYADD 指令会将文件复制到镜像并创建新层。所有这些镜像层加起来就形成了最终的 Docker 镜像。
  2. 运行于主机上: 虽然 Docker 守护进程可以在远程服务器上运行,但是通常情况下,它是在你的本地机器上作为一个后台服务运行的(如果你在本地机器上使用 Docker 的话)。这意味着所有构建操作都在你的机器上发生,只要你的机器上安装了 Docker。
  3. 隔离性: Docker 使用容器技术来保证构建过程的隔离性,确保每一次构建都在干净的环境中开始,并且构建过程中的变更不会污染宿主机或其他构建。

构建完成后,新创建的镜像会存储在本地 Docker 守护进程的镜像仓库中,你可以使用 docker images 查看。如果需要,还可以将其推送到远程镜像仓库,如 Docker Hub。