5分钟快速了解Docker的底层原理
原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。 一位同学曾给我打比方:宿主机就好比一间大房子, docker 把它成了 N 个小隔断。在这些小隔断之间,有独立的卫生间、小床、电视... 麻雀虽小,五脏俱全,这个比喻非常的贴切。Linux提供了非常全面的隔离机制,使得每个小隔间互不影响。即使隔壁小间满室春光,我的小房间一样的冷清,对我毫无影响。 Docker能实现这些功能,依赖于 chroot 、 namespace 、 cgroup 等三种 老技术 。我们本篇文章,就先聊一下 namespace 方面的东西。毕竟隔离是容器的第一要素。 Linux的内核,提供了多达8种类型的Namespace。在这些独立的Namespace中,资源互不影响,隔离措施做的非常好。 1. 8种类型 我们先来看一下,Linux都支持哪些Namespace。可以通过 unshare 命令来观察到这些细节。在终端执行 man unshare ,将会出现这些Namespace的介绍。 Mount( mnt ) 隔离挂载点 Process ID ( pid ) 隔离进程 ID Network ( net ) 隔离网络设备,端口号等 Interprocess Communication ( ipc ) 隔离 System V IPC 和 POSIX message queues UTS