科说:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
看起来有点雾,用过虚拟机的应该对虚拟化技术有点印象,不知道也没关系,就把它当成轻量级的虚拟机吧(虽然一个是完全虚拟化,一个是操作系统层虚拟化),这个解释到位:https://www.cnblogs.com/kex1n/p/6933039.html
百科又说:Docker 使用客户端-服务器 (C/S) 架构模式 使用远程API来管理和创建Docker容器。Docker 容器(Container)通过 Docker 镜像(Image)来创建,二者之间的关系类似于面向对象编程中的对象与类
那Docker由什么组成呢, 包括三个基本概念:
- 仓库(Repository)
- 镜像(Image)
- 容器(Container)
打个比方:你如果想玩英雄联盟中骚气的亚索,你首先得有这个英雄(Docker的镜像),然后你得花金币去英雄商店(Docker的仓库)买,接着进游戏就会看到一个半蹲的发型飘逸的剑客(Docker的容器),所以:
1,其中Registry是Docker用于存放镜像文件的仓库,Docker 仓库的概念跟Git 类似(就像商店存放所有的英雄,只是更改英雄的权限在某些非程序员手里)。
2,所谓镜像就是构建容器的源代码,是一个只读的模板,由一层一层的文件系统组成的,类似于虚拟机的镜像(英雄也是只读的,有自己的技能被动,你也不能进行操作)。
3,那么容器就是由Docker镜像创建的运行实例,类似于虚拟机,容器之间是相互隔离的,包含特定的应用及其所需的依赖文件(好比每个英雄都是隔离的,都有自己的皮肤,技能以及走的路线)。
注:Docker Hub是Docker公司提供的一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像
基本概念主要有三个:
● 镜像(Image)
● 一个只读的模板,镜像可以用来创建 Docker 容器
● 用户基于镜像来运行自己的容器。镜像是基于 Union 文件系统的层式结构
● 可以简单创建或更新现有镜像,或者直接下载使用其他人的。可以理解为生成容器的『源代码』
● 容器(Container)
● 容器是从镜像创建的运行实例,在启动的时候创建一层可写层作为最上层(因为镜像是只读的)
● 可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台
● 可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序
● 仓库(Registry)
● 集中存放镜像文件的场所,可以是公有的,也可以是私有的
● 最大的公开仓库是 Docker Hub
● 国内的公开仓库包括 Docker Pool 等
● 当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了
● Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务
另外 Docker 采用的是客户端/服务器架构,客户端只需要向 Docker 服务器或守护进程发出请求即可完成各类操作。那么问题来了,我们能用 Docker 来做什么呢?我们可以:
● 统一、优化和加速本地开发和构建流程
● 保证不同的环境中可以得到相同的运行结果
● 创建隔离环境用于测试
Docker 可以提供的隔离有:
● 文件系统隔离:每个容器都有自己的 root 文件系统
● 进程隔离:每个容器都运行在自己的进程环境中
● 网络隔离:容器间的虚拟网络接口和 IP 地址都是分开的
● 资源隔离和分组:使用 cgroups 将 CPU 和内存之类的资源独立分配给每个 Docker 容器
2、docker 安装
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo
yum list docker-ce --showduplicates | sort -r
yum install docker-ce-17.12.1.ce
systemctl start docker
systemctl enable docker