1.Docker入门(笔记)

早就听说了docker,但是就是不知道它是干什么的,能用来干什么。如今它越来越强大,我也得跟上。先大体普及下吧。

1.docker能做什么

解决虚拟机能解决的问题,解决虚拟机由于资源要求过高不能解决的问题

  • 隔离应用依赖
  • 创建应用镜像进行复制
  • 创建容易分发的即启即用的应用
  • 允许实例简单、快速地扩展
  • 测试应用并随后销毁它们

轻量可移植----从而有了船、集装箱、物品的故事

2.几个概念

*** 镜像 ***

最初知道的镜像就是 装系统时候,拷贝一个镜像,用这个镜像很快就装完系统了。它应该是 操作系统的一个快照而已。当然,也可以用个软件建立自己的镜像,然后备份好了就可以。对了,一键ghost。

docker的镜像类似VM的快照。

创建:
拿来主义,拿一个镜像来修改。

方式一 在一个文件中指定一个基础镜像及需要完成的修改;

方式二 通过“运行”一个镜像,对其进行修改并提交。

命名:
镜像拥有唯一ID,以及一个供人阅读的名字和标签对。

可移植性:
Docker允许你在一个镜像中指定卷和端口。(Docker不允许你在镜像上指定任何不可移植的内容。)

容器

故名思议,容器用来运行应用的啦。

可以从镜像中创建容器,这等同于从快照中创建虚拟机,不过更轻量。

容器是隔离的。

命名:
唯一ID 唯一的供人阅读的名字

容器对外公开服务是必要的,因此Docker允许公开容器的特定端口

容器有一个很大的差异,它们被设计用来运行单进程

容器之所以是短暂的,是因为当你从镜像上创建一个容器,Docker会创建一个空白的union文件系统加载在与该镜像关联的union文件系统之上。

数据卷

数据卷让你可以不受容器生命周期影响进行数据持久化。

它们表现为容器内的空间,但实际保存在容器之外,从而允许你在不影响数据的情况下销毁、重建、修改、丢弃容器。

Docker允许你定义应用部分和数据部分,并提供工具让你可以将它们分开。

使用Docker时必须做出的最大思维变化之一就是:容器应该是短暂和一次性的。

卷所做的是在容器内指定一个目录,以便在union文件系统之外保存它。

卷是针对容器的,你可以使用同一个镜像创建多个容器并定义不同的卷。

卷还可以用来在容器间共享数据

链接

容器启动时,将被分配一个随机的私有IP,其它容器可以使用这个IP地址与其进行通讯。

要开启容器间通讯,Docker允许你在创建一个新容器时引用其它现存容器,在你刚创建的容器里被引用的容器将获得一个(你指定的)别名。我们就说,这两个容器链接在了一起。

镜像,容器,卷,链接参考图

3.如何完成它需要的功能

Docker使用cgroups来提供容器隔离,而union文件系统用于保存镜像并使容器变得短暂。

cgroups:linux内核功能

IBM关于CGroup 介绍、应用实例及原理描述

CGroup 是将任意进程进行分组化管理的 Linux 内核功能。CGroup 本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O 或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。这些具体的资源管理功能称为 CGroup 子系统或控制器。CGroup 子系统有控制内存的 Memory 控制器、控制进程调度的 CPU 控制器等。运行中的内核可以使用的 Cgroup 子系统由/proc/cgroup 来确认。
CGroup 提供了一个 CGroup 虚拟文件系统,作为进行分组管理和各子系统设置的用户接口。要使用 CGroup,必须挂载 CGroup 文件系统。这时通过挂载选项指定使用哪个子系统。

限制Linux进程组的资源占用(内存、CPU)
为进程组制作 PID、UTS、IPC、网络、用户及装载命名空间

union文件系统用

Union文件系统允许通过union装载来达到一个分层的积累变化

当你下载一个镜像,修改它,然后保存成新版本,你只是创建了加载在包裹基础镜像的初始层上的一个新的union文件系统。

Linux命名空间

LXC为Linux Container的简写。

LXC所实现的隔离性主要是来自内核的命名空间, 其中pid、net、ipc、mnt、uts 等命名空间将容器的进程、网络、消息、文件系统和hostname 隔离开。

LXC内部依赖Linux内核的3种隔离机制(isolation infrastructure): Chroot 、 Cgroups 、 Namespaces

Linux的3.12内核支持6种Namespace:
UTS: hostname
IPC: 进程间通信
PID: "chroot"进程树
NS: 挂载点,首次登陆Linux
NET: 网络访问,包括接口
USER:user-id映射到真实的user-id(之后的文章会讲到)

参考

1.http://yuedu.baidu.com/ebook/d817967416fc700abb68fca1

你可能感兴趣的:(1.Docker入门(笔记))