Docker 概述
Docker 是一个开源的应用容器引擎 ,让开发者可以打包他们的应用及依赖环境到一个可移植的容器中,然后发布到任何运行有Docker引擎的机器上。
让大家可以随心所欲地使用软件而又不会深陷到环境配置中。
结构与特性
和Java虚拟机类似,Docker使用容器引擎解决平台依赖问题,它在每台宿主主机上启动一个Docker守护进程,守护进程屏蔽了与具体平台相关的信息
对上层应用提供统一的接口。Docker化的应用就可以在多个平台下运行,Docker会针对不同的平台,解析给不同平台下执行驱动、存储驱动和网络启动
去执行。
Docker采用C/S架构,包含Docker Server和Docker Client。Docker Daemon作为server,在宿主机上以后台守护进程的形式运行。Docker
Client可以在本机上以bin命令形式发送指令,也可以通过RESTful的形式发送指令。
Docker引入了分层概念。
把一个应用分为任意多个层, 如果两个应用有相同的底层,就可以共享这些层。层次是有优先级的,上层和下层有相同的文件和配置时,
上层覆盖下层,数据以上层的数据为准。
每个应用一个优先级最高的空白层,如果要修改下层的文件,就把这个文件拷贝到这个优先级最高的空白层进行修改,保证下层的文件不做任何修改
在Docker的官方仓库里,只需它有完整的文件系统和程序包,没有动态生成新文件的需求;当把它下载到宿主机上运行对外提供服务时,有可能
修改文件,需要有空白层用于写时拷贝。Docker把这两种不同的状态做了区分,分别叫做镜像和容器。
在仓库中的应用都是以镜像的形式存在的,把镜像从Docker仓库下拉到本机,以这个镜像为模板启动应用,叫容器。
Docker位于操作系统和虚拟容器(lxc或libcontainer)之上,他通过调用cgropu、namespace和libcontainer等系统层面的接口完成资源分配与相互隔离。
docker version #查询docker版本号
docker search <image_name> #查询镜像
Docker官方镜像在仓库中的全名格式:
<username>/<repository>
每个用户都可以在Docker官方镜像仓库注册自己的账户,发布自己的Docker镜像,使用“用户名+镜像名”的命名方式,可让用户拥有相同的镜像名互不干扰。
docker pull <image_name> #下载镜像
docker run #创建和运行Docker容器,它至少有两个参数,一个是镜像名,一个是在容器中需要运行的命令(在费交互模式下安装软件不要忘了使用“-y”)。
docker commit #把容器提交为新镜像。
docker push #上传新镜像到Docker仓库
docker images #显示当前主机上所有的镜像。