Build,Ship,and Run Any App, AnyWhere
Docker 是一种内核级别的虚拟化技术。实现,一次创建和或配置,在任何地方、任何时间运行的目的。
优势:
- 更快速的交付和部署;
- 更高效的资源利用;
- 更轻松的迁移和扩展;
- 更简单的更新管理
同虚拟机相比:
- Docker 启动更快
- 对系统资源需求很少
- 借鉴 Git 的设计理念来方便用户的获取、分发和更新应用镜像,存储复用,增量更新
- 支持 Dockerfile 支持灵活的自动化创建和部署机制,以提高效率和标准化流程
特性 | Docker | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较弱 |
内存代价 | 很小 | 较多 |
硬盘使用 | 一般MB | 一般Gb |
运行密度 | 单机支持上千个 | 一般十几个 |
隔离性 | 安全隔离 | 完全隔离 |
迁移性 | 优秀 | 一般 |
虚拟化技术的分类: 硬件层面虚拟化(很少)和软件层面的虚拟化。软件层面的虚拟化可以继续细分为:1、完全虚拟化;2、硬件辅助虚拟化;3、部分虚拟化;4、超虚拟化;5、操作系统级虚拟化。
Docker 属于操作系统级虚拟化,内容通过创建多个虚拟化操作系统实例(内核和库)来隔离不同的进程。
Docker 中的三个核心概念
镜像(Image)、容器(Container)和仓库(Repository)
镜像
镜像和容器的关系可以理解为Java中类和对象的关系。Docker 镜像类似于虚拟机中的镜像(ISO文件),是创建 Docker 的基础。
容器
容器是从镜像中创建的应用运行实例。它可以启动、开始、停止、删除,各个容器之间互相隔离,不可见。容器可以看出传统虚拟机中安装好的操作系统。
仓库 Repository
Docker 仓库类似于代码仓库,是 Docker 集中存放镜像文件的场所。最大的公开仓库是 Docker Hub (https://hub.docker.com/), 和 GitHub 类似,Docker Hub 中注册需要自带梯子。
Docker 的获取安装
Docker 分为社区版和企业版,默认个人使用社区稳定版本。Docker 产品 介绍。
在 Centos7 中安装 Docker CE
笔者习惯在Centos7 中实地实验,其它版本安装可以参考官网(https://docs.docker.com/install/)。
1. 卸载之前的版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
2. 通过 yum 进行安装
手动安装参考(https://docs.docker.com/install/linux/docker-ce/centos/#install-from-a-package)
设置 yum 源
1、 先安装相关的依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2、 添加稳定的 Docker 社区版本仓库到 Linux 镜像源中
# 官方镜像源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 换成阿里的 Docker 镜像源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
提示出错:Could not fetch/save url https://download.docker.com/linux/centos/docker-ce.repo to file /etc/yum.repos.d/docker-ce.repo: [Errno 12] Timeout on https://download.docker.com/linux/centos/docker-ce.repo: (28, ‘Operation timed out after 30001 milliseconds with 0 out of 0 bytes received’)
主要是因为被墙的原因
3、 执行安装命令
sudo yum -y install docker-ce
Docker 官网上说明了如何安装指定版本的 Docker
4、 启动 Docker
systemctl start docker
5、 验证 Docker 是否正确运行,启动 Hello World 镜像。
sudo docker run hello-world
执行命令后会打印出 Hello world
其它命令
## List Docker CLI commands
docker
docker container --help
## Display Docker version and info
docker --version
docker version
docker info
## Execute Docker image
docker run hello-world
## List Docker images
docker image ls
## List Docker containers (running, all, all in quiet mode)
docker container ls
docker container ls --all
docker container ls -aq
docker ps
查看运行的容器dockerd -D -H tcp://127.0.0.1:2376
通过 Dockerd 命令启动 Docker 服务,开启 Debug 模式,并监听本地的 2376 端口
对于 Centos7 来说,配置文件路径为 /etc/systemd/system/docker.service.d/docker.conf