首页 > 解决方案 > 使用 Docker 时共享主机操作系统的内核

问题描述

  1. 如果我在我的 Ubuntu 机器上部署一个通过选择 Alpine Linux 作为基础镜像构建的镜像(它充当主机操作系统 - 安装了 Docker),这里会不会有两个内核在起作用——一个来自 Ubuntu,另一个来自 Alpine?我读到 Docker 容器将共享主机内核,所以我在这里有点困惑。

  2. 如果我登录到正在运行的容器并发出另一个命令,从主机操作系统的角度来看,这会是另一个进程吗?或者这将是另一个线程?从客户操作系统的角度来看,我认为这将是两个独立的进程。

请澄清。

标签: dockeroperating-systemcontainers

解决方案


  1. “容器”只是一个抽象术语。它只是在主机(Ubuntu)上运行的另一个进程。由于您的来宾 (Alpine) 和主机 (Ubuntu) 都是基于 Linux 内核的操作系统。您在来宾操作系统中运行的任何命令或程序最终都会(通过低级库)转换为系统调用,并提供给 Ubuntu 主机的内核。

  2. “容器”只不过是主机内核对其应用一些通用策略的一组进程。因此,您在来宾操作系统(如您所称)中运行的任何命令或程序都ping将在主机上创建一个进程,该进程与您的容器应用的内核策略相同。


推荐阅读