Docker简介
Posted liao-lin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker简介相关的知识,希望对你有一定的参考价值。
Docker基本概念
- Docker客户端和服务器,又称Docker引擎
- 镜像(image)
- 容器(container)
- 仓库(Repository)
Docker客户端和服务器
Docker是一个客户端/服务器(C/S)架构的程序。Docker客户端只需向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。Docker守护进程有时也称为Docker引擎。Docker提供了一个命令行工具docker以及一整套RESTful API来与守护进程交互。用户可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。
Docker镜像
操作系统有内核态和用户态两种运行级别。对于linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像就相当于是一个root文件系统。比如Docker官方镜像ubuntu:14.04就包含了完整的一套Ubuntu14.04最小系统的root文件系统。
Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
用户基于镜像来运行自己的容器,镜像也是Docker生命周期中的“构建”部分。镜像由一系列指令一步一步构建出来。例如:
- 添加一个文件
- 执行一个命令
- 打开一个端口
容器
Docker可以帮用户构建和部署容器,用户只需要将自己的应用程序或服务打包放进容器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程,镜像和容器的关系,就像是面向对象程序设计中的类
和实例
一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。可以认为镜像是Docker生命周期的构建和打包阶段,而容器则是启动和执行阶段。
Docker容器就是:
- 一个镜像格式
- 一系列标准的操作
- 一个执行环境
Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计哲学中,唯一不同的时:集装箱运输货物,而Docker运输软件。每个容器都包含一个软件镜像,也就是容器的“货物”,而且与政治的货物一样,容器里的软件镜像可以进行一些操作。例如,镜像可以被创建启动、关闭、重启和销毁。和集装箱一样,Docker在进行上述操作时,并不关心容器中到底塞进了什么,他不管里面是Web服务器,还是数据库。或者是应用程序服务器什么的,所有容器都按照相同的方式将内容“装载“进去。Docker也不关心用户要把容器运往何方:用户可以在自己笔记本中构建容器,上传到仓库,然后下载到一个物理的或者虚拟的服务器来测试。再把容器部署到Amazon EC2主机的集群中去。
仓库
镜像构建完成后,可以很容易的在当前宿主上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。
Docker的技术组件
Docker可以运行于任何安装了现代linux内核的x64主机上。推荐的内核版本是3.8或者更高。Docker的开销比较低,可用于服务器台式机或笔记本。它包括以下几个部分:
- 一个原生的linux容器格式,Docker中称为libcontainer
- linux内核的命名空间(namespace), 用于隔离文件系统、进程和网络
- 文件系统隔离:每个容器都有自己的root文件系统
- 进程隔离:每个容器都运行在自己的进程环境中
- 网络隔离:容器间的虚拟网络接口和IP地址都是分开的
- 资源隔离和分组:使用cgroups(即control group,linux的内核特性之一)将CPU和内存之类的资源独立分配给每个Docker容器
- 写时复制:文件系统都是通过写时复制创建的,这就意味着文件系统是分层的、快速的,而且占用的磁盘空间更小
- 日志:容器产生的STDOUT、STDERR和STDIN这些IO流都会被收集并记入日志,用来进行日志分析和故障排查
- 交互式shell:用户可以创建一个伪tty终端,将其连接到STDIN,为容器提供一个交互式shell
以上是关于Docker简介的主要内容,如果未能解决你的问题,请参考以下文章
markdown [Docker] Docker片段列表和命令#linux #docker #snippets
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段
SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介创建消息生产者创建消息消费者自定义消息通道分组与持久化设置 RoutingKey)(代码片段