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 imagesDocker hubdocker的公共存储库,可以使用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初探的主要内容,如果未能解决你的问题,请参考以下文章

Docker的使用初探:常用指令说明

docker进阶-初探Docker-compose

Docker Swarm集群初探

docker-swarm初探

Docker的使用(初探总结)

Docker初探