我在码头容器上运行MySQL服务,但是我发现了一些奇怪的东西,我发现mysqld正在我的主机上运行。有人知道怎么会发生这种事吗?因为在我看来,我认为Docker容器和PC主机确实是断开连接的,
,但为什么mysqld在码头容器中运行MySQL?
发布于 2017-05-31 10:04:44
这就是容器,更具体地说是名称空间的工作方式。mysqld在它自己的进程命名空间中运行,您可以在物理上尽可能多地运行mysqld进程,而不会因为其他名称空间(文件系统、网络、pid等)而干扰其他进程。
命名空间允许将容器(及其进程)与主机系统以及其他容器隔离开来。这就是允许容器作为真正的虚拟环境运行的原因。有6个不同的名称空间:
(1) PID名称空间:这允许您在容器内运行进程,pid独立于主机内的pid或主机上的任何其他容器(或任何主机)。这就是为什么在每个容器中都可以有PID 1,而主机上又可以有PID的原因。
(2) Namespace:允许您拥有一个完全独立的IP堆栈,即每个容器内的IP地址和公开端口。
(3) Filesystem / mounts :您可以拥有一个独立的文件系统(/ (root)文件系统)和主机挂载的作用域视图。
(4) UTS名称空间:允许分配独立的主机名和域名,基本上是系统标识所需的任何内容。
(5) IPC名称空间:用于独立和孤立的进程间通信,在容器中进行SysV调用/消息队列。
(6)用户名称空间:容器中的Root不一定是主机中的根。您可以将容器中的任何用户映射到主机上的任何用户。
如果您提取mysqld进程的pid,您将看到它的pid与容器内的pid不同(通常是1),但是有相同的进程。
https://stackoverflow.com/questions/44290030
复制相似问题