Docker知识点的系统化梳理
1. Docker简介1.1 Docker是什么 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到其他机器上。容器可以简单地理解为是一个修改过的运行时环境,可以隔离所有的资源(除非明确允许)。UNIX中使用容器隔离资源已经有很长一段时间了,但是直接使用容器难度大,配置复杂,容易出错。Docker使用现有的容器技术,根据最佳实践提供一致的Docker构建方案,让大家可以很轻松的使用容器隔离资源,提供更强的安全性。目前,Docker可原生运行在Linux上,在OS X和Windows环境中通过单独的虚拟机也可以运行。 1.2 在隔离的容器中运行软件 Docker在linux上运行容器的结构如下图所示: 命令行工具或CLI在被称为用户空间的内存中运行,就像是在操作系统上运行的其他程序。运行Docker可以认为是在用户空间运行着两个程序:一个是Docker守护进程,另一个是DockerCLI,DockerCLI是与用户交互的Docker程序。上图也显示了三个运行着的容器,每个都是以Docker守护程序的子进程运行,封装在容器中。在容器中运行的程序只能访问该容器内部的内存空间和资源(除非特别规定可以访问容器外部资源)。 1.3 分发容器 Docker可以执行、复制和轻松的分发容器,Docker通过一种打包和分发的软件完成传统容器的封装,这个用来充当容器(Container)分发角色的组件被称为<font color=red>镜像(Image)</font>。镜像与容器的关系,个人认为类似类(Class)和实例的关系。基于一个类可以创建多个实例,每个实例都有独立的资源。而基于一个镜像可以创建多个容器,每个容器也互不干扰(如果不考虑容器连接等特殊情况) 2. Docker镜像2.1 Docker镜像简介 Docker镜像是一个存在于系统上的实体,镜像内部是一个精简的操作系统和应用运行所需要的文件以及所有依赖(镜像不包含内核,容器都是共享所在Docker主机的内核)。镜像仓库(Image Repository)是一个有名字的镜像桶,用于存放镜像,将镜像集中存放就是为了方便大家获取所需的镜像。镜像仓库又有一个镜像仓库服务(Image Registry)来管理,Docker客户端的镜像仓库服务是可配置的,默认是Docker Hub。在每个镜像仓库中,标签是唯一指定镜像的重要途径,也是一种创建有用别名的遍历方法。一个标签在一个仓库中只能被应用到单个镜像,但一个镜像可以有多个标签。下图展示了镜像仓库服务、镜像仓库、镜像之间的关系:镜像仓库服务管理多个镜像仓库,每个镜像仓库又可以包含多个镜像。 2.2 Docker镜像常见操作2.2.1 搜索拉取镜像 Docker镜像存储在镜像仓库中,可以从中搜索和拉去镜像。 如下为搜索镜像示例,其参数说明: NAME: 镜像仓库源的名称DESCRIPTION: 镜像的描述OFFICIAL: 是否 docker 官方发布STARS: 类似 Github 里面的 star,表示点赞、喜欢的意思。AUTOMATED: 自动构建。$ docker search ubuntuNAME DESCRIPTION STARS OFFICIAL AUTOMATEDubuntu Ubuntu is a Debian-based Linux operating sys… 10873 [OK] dorowu/ubuntu-desktop-lxde-vnc Docker image to provide HTML5 VNC interface … 422 [OK]rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 244 [OK]consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 217 [OK]ubuntu-upstart Upstart is an event-based replacement for th… 108 [OK] ... 拉取镜像,可以指定标签拉取,不指定镜像标签默认拉取标签为 lastest 的镜像 ...