## 名字空間
名字空間是 Linux 內核一個強大的特性。每個容器都有自己單獨的名字空間,運行在其中的應用都像是在獨立的操作系統中運行一樣。名字空間保證了容器之間彼此互不影響。
### pid 名字空間
不同用戶的進程就是通過 pid 名字空間隔離開的,且不同名字空間中可以有相同 pid。所有的 LXC 進程在 Docker 中的父進程為Docker進程,每個 LXC 進程具有不同的名字空間。同時由于允許嵌套,因此可以很方便的實現嵌套的 Docker 容器。
### net 名字空間
有了 pid 名字空間, 每個名字空間中的 pid 能夠相互隔離,但是網絡端口還是共享 host 的端口。網絡隔離是通過 net 名字空間實現的, 每個 net 名字空間有獨立的 網絡設備, IP 地址, 路由表, /proc/net 目錄。這樣每個容器的網絡就能隔離開來。Docker 默認采用 veth 的方式,將容器中的虛擬網卡同 host 上的一 個Docker 網橋 docker0 連接在一起。
### ipc 名字空間
容器中進程交互還是采用了 Linux 常見的進程間交互方法(interprocess communication - IPC), 包括信號量、消息隊列和共享內存等。然而同 VM 不同的是,容器的進程間交互實際上還是 host 上具有相同 pid 名字空間中的進程間交互,因此需要在 IPC 資源申請時加入名字空間信息,每個 IPC 資源有一個唯一的 32 位 id。
### mnt 名字空間
類似 chroot,將一個進程放到一個特定的目錄執行。mnt 名字空間允許不同名字空間的進程看到的文件結構不同,這樣每個名字空間 中的進程所看到的文件目錄就被隔離開了。同 chroot 不同,每個名字空間中的容器在 /proc/mounts 的信息只包含所在名字空間的 mount point。
### uts 名字空間
UTS("UNIX Time-sharing System") 名字空間允許每個容器擁有獨立的 hostname 和 domain name, 使其在網絡上可以被視作一個獨立的節點而非 主機上的一個進程。
### user 名字空間
每個容器可以有不同的用戶和組 id, 也就是說可以在容器內用容器內部的用戶執行程序而非主機上的用戶。
*注:關于 Linux 上的名字空間,[這篇文章](http://blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/) 介紹的很好。
- 前言
- Docker 簡介
- 什么是 Docker
- 為什么要用 Docker
- 基本概念
- 鏡像
- 容器
- 倉庫
- 安裝
- Ubuntu
- CentOS
- 鏡像
- 獲取鏡像
- 列出
- 創建
- 存出和載入
- 移除
- 實現原理
- 容器
- 啟動
- 守護態運行
- 終止
- 進入容器
- 導出和導入
- 刪除
- 倉庫
- Docker Hub
- 私有倉庫
- 配置文件
- 數據管理
- 數據卷
- 數據卷容器
- 備份、恢復、遷移數據卷
- 使用網絡
- 外部訪問容器
- 容器互聯
- 高級網絡配置
- 快速配置指南
- 配置 DNS
- 容器訪問控制
- 端口映射實現
- 配置 docker0 網橋
- 自定義網橋
- 工具和示例
- 編輯網絡配置文件
- 實例:創建一個點到點連接
- 實戰案例
- 使用 Supervisor 來管理進程
- 創建 tomcat/weblogic 集群
- 多臺物理主機之間的容器互聯
- 標準化開發測試和生產環境
- 安全
- 內核名字空間
- 控制組
- 服務端防護
- 內核能力機制
- 其它安全特性
- 總結
- Dockerfile
- 基本結構
- 指令
- 創建鏡像
- 底層實現
- 基本架構
- 名字空間
- 控制組
- 聯合文件系統
- 容器格式
- 網絡
- Docker Compose 項目
- 簡介
- 安裝
- 使用
- 命令說明
- YAML 模板文件
- Docker Machine 項目
- 簡介
- 安裝
- 使用
- Docker Swarm 項目
- 簡介
- 安裝
- 使用
- 調度器
- 過濾器
- Etcd 項目
- 簡介
- 安裝
- 使用 etcdctl
- Fig 項目
- 簡介
- 安裝
- 命令參考
- fig.yml參考
- 環境變量參考
- 實戰 Django
- 實戰 Rails
- 實戰 wordpress
- CoreOS 項目
- 簡介
- 工具
- 快速搭建CoreOS集群
- Kubernetes 項目
- 簡介
- 快速上手
- 基本概念
- kubectl 使用
- 架構設計
- Mesos 項目
- 簡介
- 安裝與使用
- 原理與架構
- 配置項解析
- 常見框架
- 附錄一:命令查詢
- 附錄二:常見倉庫介紹
- Ubuntu
- CentOS
- MySQL
- MongoDB
- Redis
- Nginx
- WordPress
- Node.js
- 附錄三:有用的資源