关于Docker的一些

    科技2022-07-11  85

    基础知识

    定义

    Docker简单定义:Docker容器理解为一种轻量级的沙盒(sandbox)。每个容器内运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络互相通信。容器的创建和停止十分快速,几乎跟创建和终止原生应用一致;另外,容器自身对系统资源的额外需求也十分有限,远远低于传统虚拟机。很多时候,甚至直接把容器当作应用本身也没有任何问题

    Docker的目标:实现“Build, Ship and Run Any App, Anywhere”即通过对应用的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)生命周期进行管理,达到应用组件级别的“一次封装,到处运行”。(这里的应用组件,既可以是一个Web应用、一个编译环境,也可以是一套数据库平台服务,甚至是一个操作系统或集群)

    容器技术是什么:容器有效地将由单个操作系统管理的资源划分到孤立的组中(基于Linux内核的namespace和cgroups,与虚拟机是不同层面的隔离),以更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化(para-virtualization)和系统调用替换中的复杂性

    容器与虚拟机的区别:

    三个核心概念:

    镜像:Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板容器:Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用(镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。)容器是镜像的运行实例仓库:Docker仓库类似于代码仓库,是Docker集中存放镜像文件的场所

    容器中的管理数据主要有两种方式: 

    数据卷(Data Volumes):容器内数据直接映射到本地主机环境(是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于Linux中的mount行为)数据卷容器(Data Volume Containers):使用特定容器维护数据卷。
    Processed: 0.011, SQL: 8