Dockerfile-Namespace
Docker核心-Namespaces(命名空间)
1)概念:
命令空间是Linux内核的一个强大的特性。每个容器都有自己单独的命令空间,运行在其中的应用都是独立在操作系用中运行一样。命名空间保证了容器之间彼此互不影响。
命名空间 (namespaces) 是 Linux 为我们提供的用于分离进程树、网络接口、挂载点以及进程间通信等资源的方法。在日常使用 Linux 或者 macOS 时,我们并没有运行多个完全分离的服务器的需要,但是如果我们在服务器上启动了多个服务,这些服务其实会相互影响的,每一个服务都能看到其他服务的进程,也可以访问宿主机器上的任意文件,这是很多时候我们都不愿意看到的,我们更希望运行在同一台机器上的不同服务能做到完全隔离,就像运行在多台不同的机器上一样。当我们其中一个服务被黑客入侵了,那么其他服务也会遭受这个黑客攻击。
linux默认的时候是不能同时启动两个80端口的apache和nginx,但是我们利用命令空间技术就可以实现,每个进程之间互不关联。
2)Linux上有哪些命名空间
1,PID Namespaces(PID 命名空间,CLONE_NEWPID)
不同用户登录的进程就是通过PID Namespaces来隔开的,且每个Namespaces中可以有 相同的PID。所有的LXC进程在Docker中的父进程为Docker进程,每个 LXC 进程具有不同的Namespaces。同时由于允许嵌套,因此可以很方便的实现嵌套的 Docker 容器;2,Net Namespaces(网络命名空间,CLONE_NEWNET)
有了Pid Namespaces,每个Namespaces中的PID能够相互隔离,但是network port还是共享host的端口。网络隔离是通过Net Namespaces空间实现的,每个Net Namespaces 有独立的网络设备,IP地址,路由表,/proc/net目录。这样每个container的网络就能个离开。Docker默认采用veth的方式,将容器中的虚拟网卡同host上的一个Docker网桥Docker0连接在一起;3,IPC Namespaces(,CLONE_NEWPID)
continer中进程交互采用了Linux常见的进程交互方法(interprocess communication 进程间通信– IPC),包括信号量、消息队列和共享内存等;然后同VM不同的是:continer的进程(procession)间交互实际上还是host上具有相同PID名字空间中的进程间交互,因此需要在IPC资源申请时加入Namespaces信息,每个IPC资源有一个唯一的32位ID4, Mount Namespaces(挂载命令空间,CLONE_NEWNS)
类似于chroot,将一个进程放到一个特点的目录执行。mount Namespaces允许不同Namespaces的进程看到的文件结构不同,这样每个Namespaces中的进程所看到的文件目录就被隔离开了。和chroot不同的是,每个Namespaces的container在/proc/mounts的信息只包含所在的Namespaces的mount point(挂载点);5,UTS Namespaces
UTS(UNIX Time-sahring system),允许每个continer都拥有独立的hostname和domain name,使其在网络上可以被视作一个独立的节点而非主机上的一个进程。6,User Namespacer(用户命令空间)
每个continer可以有不同的用户和组ID,可就时可以说每个continer可以用自己内部的用户,不用依赖于宿主机
3,作用
用于容器之间的资源进程隔离的
Dockerfile-Namespace的更多相关文章
- kubernetes 实战6_命令_Share Process Namespace between Containers in a Pod&Translate a Docker Compose File to Kubernetes Resources
Share Process Namespace between Containers in a Pod how to configure process namespace sharing for a ...
- docker Dockerfile 创建镜像
Docker 组件 1. docker client : docker的客户端 2. docker server : docker daemon的主要组成部分,接受用户通过docker client发 ...
- Docker技术三大要点:cgroup, namespace和unionFS的理解
www.docker.com的网页有这样一张有意思的动画: 从这张gif图片,我们不难看出Docker网站想传达这样一条信息, 使用Docker加速了build,ship和run的过程. Docker ...
- [置顶]
Docker学习总结(2)——Docker实战之入门以及Dockerfile(二)
csphere/php-fpm:5.4 # cd docker-training/php-fpm/ # ls Dockerfile nginx_nginx.conf supervisor_nginx. ...
- [置顶]
Docker学习总结(1)——Docker实战之入门以及Dockerfile(一)
一.Docker是什么? 首先Docker是软件工业上的集装箱技术 回顾,在没有集装箱出现以前,传统运输行业中,会存在这些问题: 在运输过程中,货物损坏 装卸.运输货物,效率低下 运输手续繁多及运输环 ...
- Dokcer基础使用总结(Dockerfile、Compose、Swarm)
Dokcer基础 查看Linux版本 uname -r 查看Linux详尽信息 cat /etc/*elease CentOS Linux release (Core) NAME="Cent ...
- Dockerfile解析(八)
一.Dockerfile是什么 Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本. 1. 构建的步骤 运行容器:docker run 构建新的镜像:docker ...
- docker理论 Cgroup namespace 各种隔离
耦合 是指两个或两个以上的体系或者两种运动形式间通过相互作用而批次影响以至联合起来的现象. Nginx与apache 在同一台服务器运行都占用80端口,起冲突这是我们修改其中一个端口为8080 半解耦 ...
- 6、DockerFile解析:三步走、保留字指令
1.dockerfiel是什么 1.是什么 Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本. 2.构建三步骤 编写Dockerfile文件 docker bu ...
- 使用使用dockerfile构建webapi镜像然后使用link和bridge两种方式进行桥接
首先新增一个webapi的项目 项目核心代码 UserContext using Microsoft.EntityFrameworkCore; using System; using System.C ...
随机推荐
- redis: List列表类型(四)
list设置值(头部):lpush list one list设置值(尾部):**rpush ** list one list获取值:lrange list 0 -1 list获取指定范围的值:lra ...
- 博客搬家 - 记第四次搬家(hugo建站推送到谷歌云存储)
写在前面,搬迁记录 记录我的博客这次搬家过程.我的博客之前经历过: wordpress github page Bitcron - 机制很不错(写完的博客自动保存到dropbox并发布,可惜搜索引擎的 ...
- curl发送多维数组
//通过curl模拟post的请求: function SendDataByCurl($url,$data=array()){ //对空格进行转义 $url = str_replace(' ','+' ...
- 一篇文章掌握网页解析神器——xpath
学爬虫不会xpath解析数据? 今天老师带你一堂课带你从零开始精通xpath,从此轻松提取网页信息. 我们在爬虫的过程中,经常会遇到html字符串数据,很多我们需要的数据不是作为标签的文本就是作标签的 ...
- jquery选择时分插件
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- php中&&和and有什么区别
PHP中的逻辑“与”运算有两种形式:AND 和 &&,同样“或”运算也有OR和||两种形式. 如果是单独两个表达式参加的运算,两种形式的结果完全相同,例如 $a AND $b和$a & ...
- 2019-2020-1 20199308《Linux内核原理与分析》第八周作业
<Linux内核分析> 第七章 可执行程序工作原理 7.1 知识点 1.目标文件:编译器生成的文件,"目标"指平台,它决定了编译器使用的机器指令集. 2.目标文件格式: ...
- 2019-2020-1 20199329《Linux内核原理与分析》第三周作业
<Linux内核原理与分析>第三周作业 一.上周问题总结: 第二周头脑风暴完成较慢 虚拟机libc配置错误 书本知识使用不够熟练 二.本周学习内容: 1.实验楼环境虚拟一个x86的CPU硬 ...
- 标准库shutil
shutil模块是高级的 文件.文件夹.压缩包 处理模块. 下面是关于其中各种方法的使用介绍: 1.shutil.copyfileobj(fsrc, fdst[, length])将文件内容拷贝到另一 ...
- 解读网易易盾新一代IoT安全编译器Maze
一.网易易盾为什么会推出安全编译器Maze? 随着5G时代的到来,会有越来越多的物联网设备走进我们的生活,然而物联网的终端本身普遍处于白盒环境中,***者很容易获取相关的信息进行***,这个时候如果不 ...