docker - 使用 Docker 时共享主机操作系统的内核
问题描述
如果我在我的 Ubuntu 机器上部署一个通过选择 Alpine Linux 作为基础镜像构建的镜像(它充当主机操作系统 - 安装了 Docker),这里会不会有两个内核在起作用——一个来自 Ubuntu,另一个来自 Alpine?我读到 Docker 容器将共享主机内核,所以我在这里有点困惑。
如果我登录到正在运行的容器并发出另一个命令,从主机操作系统的角度来看,这会是另一个进程吗?或者这将是另一个线程?从客户操作系统的角度来看,我认为这将是两个独立的进程。
请澄清。
解决方案
“容器”只是一个抽象术语。它只是在主机(Ubuntu)上运行的另一个进程。由于您的来宾 (Alpine) 和主机 (Ubuntu) 都是基于 Linux 内核的操作系统。您在来宾操作系统中运行的任何命令或程序最终都会(通过低级库)转换为系统调用,并提供给 Ubuntu 主机的内核。
“容器”只不过是主机内核对其应用一些通用策略的一组进程。因此,您在来宾操作系统(如您所称)中运行的任何命令或程序都
ping
将在主机上创建一个进程,该进程与您的容器应用的内核策略相同。
推荐阅读
- llvm - 如何从 MachO 二进制文件中提取 __bitcode/__bundle 部分
- swift - 当快照侦听器生效时,Tableview Like 按钮会重复
- python - 如何根据预先确定的兑换率兑换货币?(Python)
- rust - “如果让”和“如果”之间有区别吗?
- jmeter - 重复执行异步调用的请求,直到它在 JMeter 中遇到正确的响应
- angular - Intellij Ultimate 2020.1 中的 Angular 断点
- javascript - 我怎样才能让它显示这个元素的底部?(HTML、CSS、JS)
- reactjs - TypeError:firebase.default.messaging 不是函数(在 '_firebase.default.messaging()' 中,'firebase.default.messaging 未定义)
- java - JWT[ RSA ],api 所有者共享私钥
- python - 在python的循环中求解非线性方程