- docker是什么
docker基于linux内核的cgroup、namespace和unionfs等技术,对进程实行封装隔离,属于os层面的虚拟化技术。
由于进程的隔离独立于宿主机和其他隔离的进程,因此也称之为容器。
传统虚拟机需要虚拟出一套硬件,在该硬件上搭建一套完整的操作系统,再运行所需的应用。而容器内的应用进程直接运行在宿主机的内核上,容器没有自己的内核,不需要硬件虚拟,更轻便。
- 为什么要使用docker
- 更高效的利用系统资源,不需要硬件虚拟,不需要创建完整的os。
- 更快的启动时间
- 一致的运行环境,docker镜像提供了完整的运行时环境,确保了一致性
- CICD,使用dockerfile来进行镜像构建,结合ci进行集成测试,结合cd进行自动部署
- 更轻松的迁移,由于运行环境的一致性,可以快速的在多个不同的平台间进行迁移
- 更轻松的维护和扩展,docker使用分层存储以及镜像技术,使得重复部分的应用更易被复用
- 基本概念
- 镜像
- 操作系统分为内核和用户空间,内核启动后,会挂载root文件系统提供用户空间支持,docker镜像相当于是一个root文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,不包含任何动态数据,其内容在构建之后也不会被改变
- 分层存储,由于镜像包含完成的root文件系统,体积往往过大,利用union fs技术,将镜像设计为分层存储的架构,由一组多多层文件系统组成,另外还使得镜像的复用、定制变的更容易
- 容器
- 容器是镜像运行时的实体,可以被创建、启动、停止、删除、暂停等,实质是进程,与宿主机的进程不同,容器的进程运行于属于自己的namespace,有自己的root文件系统、网络配置、进程空间、用户ID空间,容器内的进程运行在一个隔离的环境里,提升了容器的安全性
- 容器也有分层的概念,以镜像为基础层,在其上面构建一个当前容器的存储层,容器不应向存储层写入任何数据,要保持容器存储层的无状态化,所有文件的写入操作,应使用volume或者绑定宿主机目录,在这些位置的读写会跳过容器存储层,直接对宿主机或网络存储设备进行读写
- volume的生命周期独立于容器,使用volume后,容器删除或重新运行,数据不会丢失
- docker registry
- 镜像的集中存储,可以在其他服务器上使用镜像,一个docker registry可以包含很多仓库,每个仓库可以包含多个标签tag,每个tag对应一个镜像
- 一个仓库会包含同一个软件不同版本的镜像,标签对应于版本,例如ubuntu:14.04
- 使用docker镜像
从仓库获取镜像
- docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
- eg : docker pull ubuntu:14.04
- 运行
- 有了镜像后,就可以以这个镜像为基础启动并运行一个容器,docker run就是运行容器的命令
列出镜像
docker image ls
删除本地镜像
docker image rm [选项] <镜像1> [<镜像2> ...] ,其中, <镜像> 可以是 镜像短 ID 、 镜像长 ID 、 镜像名 或者 镜像摘要 。
docker image rm ubuntu
镜像的唯一标识是其ID和摘要,却可以有多个标签,并非所有的rm都是删除镜像,多个标签的可能只是删除了某个标签。
删除的时候也是从上层向基础层方向依次判断删除
管理本地主机上的镜像
介绍镜像实现的基本原理
标签:容器,存储,简介,宿主机,概念,镜像,docker,运行 From: https://www.cnblogs.com/weizhenlu/p/17028763.html