首页 > 其他分享 >4-2 docker隔离机制-namespace

4-2 docker隔离机制-namespace

时间:2024-04-09 22:37:41浏览次数:21  
标签:容器 隔离 语境 PID namespace Linux docker 系统资源

1、使用Namespaces实现了系统环境的隔离
Docker实际上是在创建容器进程时,指定了这个进程所需要启用的一组Namespace参数,这样容器就只能看到当前Namespace所限定的资源、文件、设备、状态。而对于宿主机以及其他不相干的程序,就完全看不见了
http://www.dockone.io/article/8148
常见的Namespace及其作用见下:
Mount namespaces:
  内核版本:Linux 2.4.19;
  被隔离的全局系统资源:文件系统挂接点
  在容器语境下的隔离效果:每个容器能看到不同的文件系统层次结构
UTS namespaces:
  内核版本:Linux 2.6.19;
  被隔离的全局系统资源:主机名和域名(nodename和domainname);
  在容器语境下的隔离效果:每个容器可以有自己的 hostname 和 domainame
IPC namespaces:    
    内核版本:Linux 2.6.19;
    被隔离的全局系统资源:特定的进程间通信资源,包括System V IPC和POSIX message queues    
    在容器语境下的隔离效果:每个容器有其自己的 System V IPC和POSIX消息队列文件系统,因此,只有在同一个IPC namespace的进程之间才能互相通信
PID namespaces:
    内核版本:Linux 2.6.24
    被隔离的全局系统资源:进程ID数字空间(process ID number space)
    在容器语境下的隔离效果:每个PID namespace中的进程可以有其独立的PID;每个容器可以有其PID为1的root进程;也使得容器可以在不同的host之间迁移,因为namespace中的进程ID和host无关了。这也使得容器中的每个进程有两个PID:容器中 PID和host上的PID。
Network namespaces:
    内核版本:始于Linux 2.6.24 完成于 Linux 2.6.29    
    被隔离的全局系统资源:网络相关的系统资源    
    在容器语境下的隔离效果:在容器语境下的隔离效果:每个容器用有其独立的网络设备,IP地址,IP 路由表,/proc/net目录,端口号等等。这也使得一个host上多个容器内的同一个应用都绑定到各自容器的80端口上。
User namespaces:
    内核版本:始于Linux 2.6.23 完成于 Linux 3.8)    
    被隔离的全局系统资源:用户和组ID空间     
    在容器语境下的隔离效果:在user namespace中的进程的用户和组ID可以和在host上不同;每个container可以有不同的user和group id;一个host上的非特权用户可以成为user namespace中的特权用户;
1、使用Namespaces实现了系统环境的隔离
Docker实际上是在创建容器进程时,指定了这个进程所需要启用的一组Namespace参数,这样容器就只能看到当前Namespace所限定的资源、文件、设备、状态。而对于宿主机以及其他不相干的程序,就完全看不见了
http://www.dockone.io/article/8148
常见的Namespace及其作用见下:
Mount namespaces:
  内核版本:Linux 2.4.19;
  被隔离的全局系统资源:文件系统挂接点
  在容器语境下的隔离效果:每个容器能看到不同的文件系统层次结构
UTS namespaces:
  内核版本:Linux 2.6.19;
  被隔离的全局系统资源:主机名和域名(nodename和domainname);
  在容器语境下的隔离效果:每个容器可以有自己的 hostname 和 domainame
IPC namespaces:    
    内核版本:Linux 2.6.19;
    被隔离的全局系统资源:特定的进程间通信资源,包括System V IPC和POSIX message queues    
    在容器语境下的隔离效果:每个容器有其自己的 System V IPC和POSIX消息队列文件系统,因此,只有在同一个IPC namespace的进程之间才能互相通信
PID namespaces:
    内核版本:Linux 2.6.24
    被隔离的全局系统资源:进程ID数字空间(process ID number space)
    在容器语境下的隔离效果:每个PID namespace中的进程可以有其独立的PID;每个容器可以有其PID为1的root进程;也使得容器可以在不同的host之间迁移,因为namespace中的进程ID和host无关了。这也使得容器中的每个进程有两个PID:容器中 PID和host上的PID。
Network namespaces:
    内核版本:始于Linux 2.6.24 完成于 Linux 2.6.29    
    被隔离的全局系统资源:网络相关的系统资源    
    在容器语境下的隔离效果:在容器语境下的隔离效果:每个容器用有其独立的网络设备,IP地址,IP 路由表,/proc/net目录,端口号等等。这也使得一个host上多个容器内的同一个应用都绑定到各自容器的80端口上。
User namespaces:
    内核版本:始于Linux 2.6.23 完成于 Linux 3.8)    
    被隔离的全局系统资源:用户和组ID空间     
    在容器语境下的隔离效果:在user namespace中的进程的用户和组ID可以和在host上不同;每个container可以有不同的user和group id;一个host上的非特权用户可以成为user namespace中的特权用户;

 

标签:容器,隔离,语境,PID,namespace,Linux,docker,系统资源
From: https://www.cnblogs.com/skyzy/p/18125011

相关文章

  • 4-1 Docker容器实现原理
    Docker容器实现原理主要是namespace和cgroup控制资源的隔离。虽然Docker可透过Namespace的方式分隔出看似是独立的空间,然而Linux内核(Kernel)却不能Namespace,所以即使有多个Container,所有的systemcall其实都是通过主机的内核处理,这便为Docker留下了不可否认的安全问题。虚拟机......
  • 2-3、dockerfile之wordpress
    wordpress:4.2#cddocker-training/wordpress/#ls-a.license.txtwp-config-sample.phpwp-login.php..readme.htmlwp-contentwp-mail.phpDockerfilewp-activate.phpwp-cron.php......
  • 2-2、dockerfile之php-fpm,mysql
    dockerfile之php-fpm#cddocker-training/php-fpm/#lsDockerfilenginx_nginx.confsupervisor_nginx.confnginx_default.confphp_www.confsupervisor_php-fpm.conf各文件解释:nginx_nginx.conf替换默认的nginx.conf文件nginx_default.conf替换默......
  • 1-1、Docker命令详解
    Docker命令详解#docker--helpUsage:docker[OPTIONS]COMMAND[arg...]dockerdaemon[--help|...]docker[-h|--help|-v|--version]Aself-sufficientruntimeforcontainers.主要选项:-d:以后台进行方式运行容器-t:提供一个伪终端-......
  • 1-2、docker命令
    docker命令1run主要选项:-d:以后台进行方式运行容器-t:提供一个伪终端-i:提供交互输入,一般与“-t”一起使用,如果只提供“-i”选项,则容器启动后是无法退出的-v:映射一个volume给容器,如:-p/data/www:/var/www/html-p:将容器的端口映射给宿主机(指定映射出的端口),......
  • 2-1、dockerfile之centos7
    docker基础及dockerfile1、docker组件(C/S)dockerclient:docker客户端dockerserver:dockerdaemon的主要组成部分,接受用户通过dockerclient发送的请求,并按照相应的路由规则实现路由分发docker镜像:docker镜像运行之后变成容器(dockerrun)dockerregistry:镜像仓库,registry......
  • 1-0 docker介绍
    dockerdocker与传统的虚拟化方式相比:docker的启动在秒级;docker对系统资源利用率高,一台主机可以同时运行多个docker容器;docker基本不消耗系统资源,使得运行在docker里面的应用的性能很高;更快的支付和部署:开发者可以使用一个标准的镜像来构建一套开发容器,开发完成后,运维人员可......
  • 【Linux】虚拟化技术docker搭建SuitoCRM系统及汉化
    CRM系统CRM(CustomerRelationshipManagement,客户关系管理)系统是一种用于管理和优化企业与客户关系的软件工具。在商业竞争激烈的现代社会中,CRM系统已成为许多企业提高销售、增强客户满意度和实现持续增长的重要工具。本文将介绍CRM系统的概念、功能以及其在企业中的重要性......
  • docker ——网络配置和管理
    docker网络基础了解docker网络两种docker网络单主机与多主机的docker网络网络驱动网络驱动介绍bridge桥接网络,这是默认的网络驱动程序host主机网络overlay覆盖网络macvlan将mac地址分配给容器,使容器作为网络上的物理设备none表示关闭容器的所有......
  • Windows(Win11) 安装 Docker (Docker Desktop)
    目录前言下载安装wsl安装DockerDesktop启动DockerDesktop 配置国内镜像拉取镜像前言一般docker都是直接安装在Linux服务器上,用来快速部署一些中间件(比如redis,rocketmq等等),省去繁琐的安装以及配置过程。很少有在window上跑docker的情况,不过总有意想不......