Docker初探
Posted 南山笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker初探相关的知识,希望对你有一定的参考价值。
Docker采用Client/Server的运行模式,docker daemon是服务器层,而docker cli/rest api为客户端,通过客户端可以对server进行管理和维护。如下图:
根据客户端指令,docker daemon可以创建images,运行container,通过创建data volumes解决数据持久化,而通过network解决容器间的交互,以及对外提供服务。
Images和Container的关系可以理解为类和对象的关系,也可以oracle数据库的数据库和实例的关系,一个是静态的文件,另一个是运行的实例。
Docker的价值,按照官方的说法有以下:
1.使开发人员可在标准化环境中进行应用程序的开发、测试和上线,简化了开发的生命周期;
2.动态管理工作负载变得非常容易,根据业务需求,以近乎实时方式扩展或删除应用和服务。
3.充分利用主机资源支持更多的负载
Docker的架构示意:
其中,Docker registry存储docker images。Docker hub是docker的公共存储库,可以使用docker pull/run/push命令获取运行和提交镜像。
Docker使用Go语言编写,利用linux的以下内核特性提供功能:
Namespace:
使用命名空间的技术来提供名为容器的独立工作区。当您运行一个容器时,Docker会为该容器创建一组名称空间,通过名称空间提供一个隔离层。容器的每个方面都运行在一个单独的命名空间中,它的访问仅限于该命名空间。
名空间主要有以下:
pid名称空间:进程隔离(pid:Process ID);
net命名空间:管理网络接口(net:Networking);
ipc命名空间:管理对ipc资源的访问(ipc:进程间通信);
mnt名称空间:管理文件系统装载点(mnt:mount);
uts名称空间:隔离内核和版本标识符。(UTS:Unix分时系统)。
Control groups:
控制组技术(cgroups),允许Docker引擎将可用的硬件资源共享给容器,并有选择地实施限制和约束。例如,可以限制特定容器的可用内存。
联合文件系统
Union filesystems:
Union文件系统或UnionFS是通过创建层来操作的文件系统,使它们非常轻量级和快速。Docker引擎使用UnionFS为容器提供构建块。Docker引擎可以使用多个UnionFS变体,包括AUFS、btrfs、vfs和deviceapper。
Container format:
Docker引擎将名称空间、控制组和UnionFS组合成一个称为容器格式的包装器。默认的容器格式是libcontainer。
参考资料:
https://www.docker.org.cn/faq/global/c78.html,介绍了docker使用中各种常见问题,非常有参考价值。
No.28。
以上是关于Docker初探的主要内容,如果未能解决你的问题,请参考以下文章