Docker 漫谈——MacTalk By池建强
- 2015-10-29 16:13:00
- 先知 转贴
- 16356
Twitter: @sagacity
Weibo: @池建强
Mail: jackychi@gmail.com
Docker - 云端的容器
传统的软件产品开发
‣确定产品定位和需求,确定首次迭代的范围。
‣制作界面原型。
‣技术选型,然后根据技术选型为每个开发者搭建开发环境和技术栈, 例如 Java 环境、Python 环境、Ruby 环境、数据库、中间件等等。
‣构建基础技术框架和服务,包括日志、存储、消息、缓存、搜索、数 据源、集群扩展等等。
‣模拟用户容量,构建测试环境。
‣开始编写真正的业务代码,实现产品功能。
‣迭代开发/测试,生生不息,周而复始,直到头发掉光为止……
dotCloud 的理想
‣确定产品定位和需求,确定首次迭代的范围。
‣制作界面原型。
‣PaaS
‣开始编写真正的业务代码,实现产品功能。
‣迭代开发/测试,生生不息,周而复始,直到头发掉光为止……
Docker是一个开源引擎,它能够以容器的方式自动部署任何应用。轻 量级,可移植,虚拟化,语言无关
‣Docker采用 Go 语言实现,沙箱机制。容器即服务
‣任何在你的笔记本上运行良好的应用容器都可以部署到产品环境、虚 拟机、硬件集群和OpenStack集群上
一次编写,随处运行(@Linux 3.8+ AUFS)
Docker 术语
‣Container:LinuxContainer(容器),运行时可写
‣Image:容器的镜像,每个镜像可以运行多个容器实例
‣Hub:中央仓库,为分布式应用提供广泛服务,包括容器 镜像分布、更改、用户和团队协作、生命周期自动化等
‣Dockerfile:创建镜像的自动化脚本
‣Push/Pull:从 Index 获得镜像或者推送镜像到 Index
容器的特点
‣容器是一系列进程的集合
‣使用 libcontainer 技术实现本地 Linux 容器
‣使用 namespaces 实现文件系统、进程和网络的隔离
‣使用 cgroups 实现资源的隔离和分组,包括 CPU、内存
‣基于copy-on-write创建文件系统,分层、快速、占用空间少
‣交互式 Shell
从容器实例来看,你可以
‣通过 SSH 登录容器
‣可以拥有 ROOT 权限
‣可以安装需要的程序包
‣有自己的网卡信息
‣能够配路由表和 iptables规则
‣可以挂接文件系统
‣……
Docker VS 虚
拟机
Docker 是基于 libcontain 实现的轻量级容 器,进程级别
在主机上运行时只是一组进程
基于分层文件系统实现 COW,共享只读分区
轻量级,占用的资源少,一台主机可以轻松运行成百 上千的容器
启动时间快,秒级启动
镜像是模板,容器是实例,镜像和容器之 间可以相互转换
- run:从镜像运行一个新容器
- start:启动一个已经停止的容器
- stop:停止一个正在运行的容器
- attach:连接一个正在运行的容器
- ps:浏览系统中的容器
- images:浏览系统中的镜像
- build: 根据构建脚本 Dockerfile 构建容器
- inspect:查看容器的系统信息
……
docker run --name lvs1 --privileged -m="2g" -c=2 -i -t -d -p 42292:22
-p 45080:80 ubuntu:lvs /usr/sbin/sshd -D
基于 Docker 构建服务
使 用 Docker 的 API
Docker API
‣Registry API:提供 Docker的注册集成服务,存储镜像
‣DockerHubAPI:提供 DockerHub 的集成服务
‣Docker Remote API:Docker 引擎远程命令行的代替者,通过编 程的方式管理 Docker
所有的Docker API 都是 Restful 风格的
Docker API为开发者提供了极大的扩展能力
基于 SSL/TLS 的 CA Server-Client 认证保证 API 调用 的安全性
基于 Docker API 的第三方认证
Docker的安全
If you have root on acontainer you have root on thewhole box.
‣ 不要上来就给容器 Root权限
‣ 如果不得不给,可以让它看起来像是 Root
‣ 如果还不够,在给用户 Root权限的同时,构建 另一道防线
联系人: | 王春生 |
---|---|
Email: | chunsheng@cnezsoft.com |