docker nginx 进程用户_说一下docker容器的解耦与隔离

6ce5ea9ecd743eb955c86c451c80f6f8.png

众所周知docker的容器是使用的虚拟化的技术

虚拟化:就是硬件的资源分割,当然硬件资源分割也是分为解耦状态以及半解耦状态,

看下面这张图

7843fd1a633c07d898c003933e3fe4af.png

解耦状态: 所有东西都没有重复,任何东西都没有公用的地方。

半解耦状态:有部分共同的一起用,其他的独立

完全解耦状态: 就是各自都是独立没有重复。

看这张图Hypervisor是一个建立在主机之上的一个虚拟机他的内存和cpu还有各种的硬件都是独立的,再看docker这边他是一个直接建立在主机上的一个app

docker是属于半解耦的

(1)docker程序和物理机公用驱动程序和lib库文件,还有可能共同使用一个文件,如在docker开一个nginx,那么物理机也开一个,但是在内存里只会有一个nginx文件,所以他们共同使用一个文件。

(2)docker是一个文件夹,将所以驱动程序做个软连接,然后将物理机的东西都连接进去,把目录结构也放进去,将物理机都连接进去,叫bootfs,bootfs物理机提供的。

(3)docker 是物理机公用一个内核,只要有bootfs和rootfs 就可以直接在这个容器里装软件了,这个软件就会以为这是一个系统,有lib库,有驱动程序,各种目录结构,而系统会认为这就是一个文件夹,这种状态叫半解耦。可以安装其他的系统,但并不是整个的系统。

(4)半解耦状态:内存里共生的东西都会共用。 解耦状态:就是所有的虚拟机都不会产生冲突,有自己单独的体系。

docker的那些硬件资源需要完全耦呢?

docker存在的目的:就是在一个系统里运行相同的程序。

PID: id

UTS:主机名和域名

IPC:信号量/消息列队/共享内存(可以共同读内存,不能共同写)

NET:网络设备/网络栈/端口等 NS: 挂载点(文件系统)

USER: 用户和组

bug: 权限不能隔离。

同一个程序想在一起运行的时候就放在相同的一个命名空间里且没有冲突 可以起别名,上边的几项值没有冲突,自己是唯一,就可以共同运行。

namespace:(命名空间) 想让两个程序共同工作,就要放在同一个空间里,且没有冲突,以上的6项没有冲突。 空间范围怎么看,看编号,如果编号都一样,说明在一个空间范围工作,如果不一样就说明被隔离了

下面我来做一下隔离

写一个小型的脚本

850709e703a5f055c64874d7c6a1428d.png

隔离name

6e3551b026b1c828c59c61aaaa5e5baa.png

2b426d5c8646509b3a689aa48d29012d.png

再执行./ust.o

hostname

exit

hostname

隔离ipc

2d6e79dea1e7b6666074cef62b1827fa.png

3b78156df84c4b547ca7343daacf8ead.png

8fee192c4902245af6d8bb6a3e858303.png

6165737b22e48c571564fcd549420569.png

隔离进程

13061c5507e0ce19c733e9fc7b313f3c.png

44c0eb2953b4b302d4fd966b3461f389.png

当然使用Namespace隔离有缺点

最大的缺点就是隔离不彻底

1)容器运行在宿主机上的一种特殊的进程,那么多个容器之间使用的就还是同一个宿主机的操作系统内核

2)在Linux内核中,有很多资源和对象是不能被Namespace化的

举个例子:时间,即如果某个容器修改了时间,那整个宿主机的时间都会随之修改

3)容器给应用暴露出来的攻击面比较大,在生产环境中,没有人敢把运行在物理机上的Linux容器暴露在公网上

那么接下来就需要使用更强大的工具Cgroup

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值