Docker基础
注:此学习笔记整理时间较早。
Docker简介
Docker是DotCloud基于Go语言并遵循Apache 2.0协议开源的产品,于2013年3 月发布首个版本,是一个世界领先的软件“集装箱化”平台。它基于 Linux 内核 的 cgroup, namespace等技术对进程进行隔离,号称“build once, configure once and run anywhere“,让开发者可以打包他们的应用以及依赖包到一个可 移植的容器中,然后发布到任何流行的 Linux 机器上。
Docker架构
Docker 架构如下:
完整的Docker有以下几个部分组成:
- docker 客户端(Client)
- Docker 守护进程(Daemon)
- Docker 镜像(Image)
- Docker容器(Container)
Docker应用场景
Docker的典型场景:
- 使应用的打包与部署自动化
- 创建轻量、私密的PAAS环境
- 实现自动化测试和持续的集成/部署
- 部署与扩展webapp、数据库和后台服务
容器与虚拟机比较
传统虚拟机技术
先介绍下Hypervisor:
Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个 操作系统和应用共享一套基础物理硬件。 Hypervisor是所有虚拟化技术的核 心。非中断地支持多工作负载迁移的能力是Hypervisor的基本功能。当服务器 启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、 CPU、网络 和磁盘,并加载所有虚拟机的客户操作系统。
容器与虚拟机比较
- 传统虚拟机技术通过Hypervisor层抽象底层基础设施资源,提供相互隔离的虚拟机,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
- 而容器内的应用进程运行于宿主的内核,容器内没有自己的内核,没有客户机操作系统,而且也没有进行硬件虚拟,因此容器要比传统虚拟机 更为轻便。
- 虚拟机是为提供系统环境而生的,容器是为提供应用环境而生的。
一个简单形象类比
为了加深理解,一个简单类比如下:
- 物理机:
- 虚拟机:
- 容器:
运行一个容器
通过 docker run 运行一个容器:
$ docker run -itd busybox sleep 300 52eab400f2fa3324cc3a6772e334474251fe6c87a2cc3877310a711aba86da6b
通过 docker ps 查看容器:
$ docker ps | grep busybox 52eab400f2fa busybox "sleep 300" 28 seconds ago Up 27 seconds quizzical_fermi
通过 docker rm 删除容器:
$ docker rm -f 52eab400f2fa 52eab400f2fa
发表评论