“Docker”一词来自英国口语,意为码头工人(Dock Worker),即从船上装卸货物的人。据说改名让它集得2亿多融资,市值翻了好几倍——论起名的重要性

。
docker是开源代码软件项目,利用 Linux 核心中的资源分脱机制,例如 cgroups,以及 Linux 核心名字空间(name space),来创建独立的软件容器(containers),属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
docker由几部分组成:
docker优点与缺点:
优点:
1、模块化
2、层和镜像版本控制
3、回滚
4、快速部署
缺点:
1、不适用多容器
docker与虚拟机的区别:

虚拟机——传统的虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给他的资源将全部被占用。每一个虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
docker——容器技术和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。容器内没有自己的内核,也没有进行硬件虚拟。

docker相比虚拟机:
1.更快启动速度
2.更高效的资源利用率
3.更高的系统支持量
4.持续交付与部署
5.更轻松的迁移/维护与扩展
6.更弱的隔离性和安全性
docker的几个核心概念
1、镜像:特殊的文件系统。除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
2、容器:实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间容器可以被。创建、启动、停止、删除和暂停等等,说到镜像与容器之间的关系,可以类比面向对象程序设计中的类和实例
3、仓库:镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。一个 Docker Registry 中可以包含多个仓库;每个仓库可以包含多个标签;每个标签对应一个镜像,其中标签可以理解为镜像的版本号。
如何获取镜像?
Docker Hub 上有大量优秀的镜像,下面先来说说如何获取镜像。和 git 类似,docker 也使用 pull 命令,其格式如下:
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签 其中 Docker 镜像仓库地址若不写则默认为 Docker Hub,而仓库名是两段式名称,即 /。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。
Docker 镜像还有一些常用操作,比如:
docker image ls - 列出本地已下载镜像docker image rm [选项] [ ...] - 删除镜像docker logs - 查看容器日志docker ps - 列出当前所有正在运行的容器docker ps -l - 列出最近一次启动的容器docker search image_name - 从 Docker Hub 检索镜像docker history image_name - 显示镜像历史docker push new_image_name - 发布镜像
















