Docker:
让应运程序在软件容器下的工作可以自动化进行
在linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制
docker利用Linux核心中的资源分脱机制,例如cgroups,以及linux核心名字空间nameSpace 来创建独立的软件容器 containers
docker最初实现是基于LXC,从0.7版本之后开始去除LXC,使用自己开发的libcontainer,从1.11开始,使用runC和containerd(runc 是一个 Linux 命令行工具,用于根据 OCI容器运行时规范 创建和运行容器。containerd 是一个守护程序,它管理容器生命周期,提供了在一个节点上执行容器和管理镜像的最小功能集。)
解决问题:
简化环境管理
虚拟化更加轻量级:
操作系统级别的虚拟技术
应用场景:
加速本地开发
自动打包和部署应用
创建轻量私有的paas环境
自动化测试和持续集成
部署并且拓展web应用、数据库和后端服务器
创建安全沙盒
轻量级的桌面虚拟化
docker核心组件:
镜像:一个只读的静态模板,保存了容器需要的环境和应用的执行代码,可以将镜像看作容器的代码,当代码运行起来之后,就成了容器。
容器:是一个运行时环境,是镜像的一个运行状态,镜像执行的动态表现。
库:一个特定用户存储镜像的目录,一个用户可以建立多个库来保存自己的镜像。
image文件:
Docker把应用程序及其依赖打包在image文件里面,只有通过这个文件才能生成Docker容器,image文件可以看作是容器的模板,同一个image文件,可以生成多个同时运行的容器实例
image文件是一个二进制文件,实际开发过程中,一个image文件通过继承另一个image文件加上一些个性化的设置。
image文件是通用的。一台机器的image文件可以拷贝到另一台机器。
docker container run 命令生成容器实例
容器文件:
image文件生成的容器实例本身也是也给文件,称为容器文件。关闭容器不会删除容器文件。
docker container start 命令用来启动生成、停止的容器文件
Dockerfile文件:
Dockerfile文件是一个文本文件,用来配置image。docker根据该文件生成二进制image文件。
docker image build 命令构建image