1.6 docker namespace简介
但是,如上图一个宿主机运行了N 个容器,多个容器带来的以下问题怎么解决:
1.怎么样保证每个容器都有不同的文件系统并且能互不影响?
2.一个docker 主进程内的各个容器都是其子进程,那么实现同一个主进程下不同
类型的子进程?各个进程间通信能相互访问(内存数据)吗?
3.每个容器怎么解决IP 及端口分配的问题?
4.多个容器的主机名能一样吗?
5.每个容器都要不要有root 用户?怎么解决账户重名问题?
以上问题怎么解决?
namespace是Linux系统的底层概念,在内核层实现,即有一些不同类型的命名空间被部署在内核,各个docker容器运行在同一个docker主进程并且共用同一个宿主机系统内核,各docker容器运行在宿主机的用户空间,每个容器都要有类似于虚拟机一样的相互隔离的运行空间,但是容器技术是在一个进程内实现运行指定服务的运行环境,并且还可以保护宿主机内核不受其他进程的干扰和影响,如文件系统空间、网络空间、进程空间等,目前主要通过以下技术实现容器运行空间的相互隔离:
隔离类型 | 功能 | 系统调用参数 | 内核版本 |
---|---|---|---|
MNT Namespace(mount) | 提供磁盘挂载点和文件系统的隔离能力 | CLONE_NE |