【问题标题】:Understanding docker container processes了解 docker 容器进程
【发布时间】:2018-11-09 19:23:42
【问题描述】:

对不起,如果这是一个愚蠢的问题,但是:

我来自 vagrant,我们在每台机器上都有一个功能齐全的操作系统,运行 ps -aux 我们可以看到操作系统进程和我们的服务(我在某种程度上知道在 VM 和 Docker 中运行的应用程序之间的区别)。

然后我刚刚使用 docker-compose 构建了一些容器,并使用 bash(基于 debian:jessie 映像)登录到容器。运行ps -aux后只能看到我安装的服务,看不到单个操作系统的进程。为什么?他们在哪里?这是如何工作的?

Docker 有一个运行容器的 VM,每个容器可能基于不同的发行版,因此,操作系统是否也被容器化了,因为 docker 有主机的操作系统 (VM)?

【问题讨论】:

  • 每当你听到“Doc​​ker 容器”时,只想到“正常的进程,但有一堆东西(文件系统、进程、网络东西等)通过命名空间被沙盒化”。
  • @OliverCharlesworth 所以实际上 debian:jessie docker 的镜像不是操作系统,而是在单个进程中模拟它?
  • 基本上,你得到的只是一个看起来像“真实” Jessie 系统上的文件系统的文件系统(在标准 Docker 功能之上 - 沙盒网络等)没有模拟/模拟继续。

标签: docker process


【解决方案1】:

Docker 有一个运行容器的虚拟机

不,容器不是虚拟机(docker 包含一个用于桌面版本的虚拟机,但那不是容器,还有虚拟机运行时,但那不是传统容器)。

容器是一种使用内核命名空间隔离正在运行的应用程序的方法,用于文件系统、pid 和网络等。它们都在同一个内核中运行。拉取 Alpine、Ubuntu 等的基础镜像会为您提供基础文件系统、库、包管理器,但不提供内核。在容器内启动的唯一进程是您的应用程序,当您的应用程序退出时,容器也会退出。因此您不会看到操作系统实用程序正在运行。

另见this answer

【讨论】:

    猜你喜欢
    • 2020-06-01
    • 1970-01-01
    • 2022-06-11
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 2016-05-12
    相关资源
    最近更新 更多