- 由于不同应用依赖的环境不同,迁移到其他环境(服务器)时往往需要重新部署和调试
- Docker通过容器打包应用,解耦应用和运行平台,这样在迁移的时候只需要在新服务器上启动需要的容器即可,无需再配环境
Docker容器技术也是操作系统虚拟化的一种,传统方式(VMware)是在硬件层面实现虚拟化,Docker是在操作系统层面上实现虚拟化,因此更加轻量级
表1 容器技术与虚拟机技术的比较
特性 | 容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较弱 |
内存代价 | 很小 | 较大 |
硬盘使用 | 一般为MB | 一般为GB |
运行密度 | 单机支持上千个容器 | 一般几十个 |
隔离性 | 安全隔离 | 完全隔离 |
迁移性 | 优秀 | 一般 |
Docker的核心概念
Docker有三个核心概念:镜像Image、容器Container、仓库Repository
镜像
可以理解为一个系统ISO,里面装好了某些应用
使用 docker images 可以查看主机已有的镜像信息
- 图中 REPOSITORY 表示来自哪个仓库
- TAG表示镜像的版本信息
- IMAGE ID表示镜像唯一标识,一般可以用前几位代替整个ID
容器
类似于一个轻量级的沙箱,用来运行应用
容器是由镜像创建的运行实例,可以启动、开始、停止、删除
镜像本身是只读的,容器从镜像启动时会在最上层创建一个可写层
容器之间彼此隔离,互不可见
使用 docker ps 查看运行中的容器
- CONTAINER ID 唯一标识容器
- IMAGE 的组成是 REPOSITORY:TAG
- COMMAND 表明是以什么命令运行的容器
仓库
Docker 仓库类似于代码仓库,是集中存放镜像文件的地方
目前最大的公开仓库是 Docker Hub,国内有时速云、阿里云等
Docker 安装
参考官方文档,安装社区版(Community Edition)
由于Docker对Linux的支持是原生的,本文介绍ubuntu下的安装方式
- ubuntu系统要求14.04及以上
对于14.04,先安装依赖包
sudo apt-get update sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
配置仓库
sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
安装docker
sudo apt-get update sudo apt-get install docker-ce
将当前用户加入docker组
sudo groupadd docker sudo usermod -aG docker $USER