为什么会有Docker?
虚拟化
虚拟化在计算机领域指的是一种资源管理的技术,是将计算机的各种实体资源,如网络,内存,存储空间等,进行抽象转换后呈现出来,打破实体结构件的不可切割的障碍,使用户可以用比原本的组态更好的方式来应用这种资源。
了解了虚拟化的概念之后,有用过虚拟机的同学应该就很清楚了,这不就是虚拟机么!但虚拟机的缺点很明显,开机慢,配置麻烦,以及性能落后等等,Docker也是虚拟化技术的一种,但是 Docker 在 LXC(Linux 容器技术)的基础上,进一步优化了容器的使用体验。 Docker提供了各种容器管理工具,让用户不用关心底层的操作,可以简单明了的使用容器。
上图是VM和Docker的区别。
Docker在运维何开发时的优势体现在这几个方面
- 拥有更快的交付和部署。
- 有更高效的资源利用。(因为是内核级别的虚拟化,不需要VM这类软件的支持)
- 更轻松的迁移和拓展。(全平台支持)
- 更简单的更新管理,使用Dockerfile,就可以替代以往大量的更新工作。
Docker三大概念
镜像(Image)
Docker Image 类似于虚拟机镜像,可以将它理解为一个面向 Docker 引擎的只读模板,包含了文件系统。镜像时创建 Docker 容器的基础。
容器(Container)
Docker容器类似于一个沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实力,可以将其启动、开始、停止、删除。容器是互相隔离、互不可见的。有一个细节需要注意,镜像自身是只读的,容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身是不变的。
仓库(Repository)
Docker 仓库类似于代码仓库,是 Docker 集中存放镜像文件的一个场所。(Docker仓库管理模式与Git十分相似)
几个常用命令
docker pull NAME[:TAG] // 从网上下载镜像
docker images //查看镜像信息
docker inspect //获取该镜像的详细信息
docker search TERM //从远端仓库中搜索共享的镜像
docker rmi IMAGE //删除景象
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] //基于已有镜像容器创建一个新的镜像信息
docker save //存储镜像
docker load //载入镜像
docker push //上传镜像
docker create //新建一个处于停止状态的容器
docker run //相当于docker create + docker start CONTAINER_NAME
docker stop --time //在设定时间后停止一个容器
docker attach CONTAINER //进入容器内部,但如果多个窗口同时attach的话,所有窗口都会同步显示。
docker rm [OPTIONS] CONTAINER //删除处于种植状态的容器。