docker学习笔记(一)

一.什么是docker

  •    linux容器技术
  •    操作系统级别的虚拟化
  •    依赖于Linux内核的namespace和cgroups
  •    将应用程序自动部署到容器
  •    使用go语言开发的一个引擎
  •    2013年初开始 dotcloud
  •    基于apache 2.0开源授权协议发行
  •   把应用程序自动部署到容器中的一个开源引擎。

 

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

二、docker的目标

  •  提供简单轻量级的建模方式
  •  职责的逻辑分离
  •  快速高效的开发生命周期:开发环境->测试环境->生产环境的一致性。
  •  鼓励使用面向服务的架构:一个docker只运行一个服务,高内聚,低耦合,单一服务。

 

三、Docker通常用于如下场景:

  • 使用docker容器开发,测试,部署服务。
  • 创建隔离的运行环境
  • 快速的搭建测试环境
  • 构建多个用户的平台即服务(PaaS)基础服务
  • 提供软件即服务(SaaS)应用程序
  • 高性能,超大规模的宿主机部署

四、docker的基本组成

1.client客户端:docker是c/s架构,docker通过客户端发送命令给守护进程

2.daemon守护进程

3.image镜像

4.container容器

 

 

 

 

 

 

 

 

 

 

5.registry 仓库:公有仓库,私有仓库,docker公司自己出来一个Docker Hub公有仓库

 

 

 

namespaces命名空间

普通虚拟机将整个操作系统运行在虚拟的硬件平台上, 进而提供完整的运行环境供应用程序运行, 而Docker则直接在宿主平台上加载运行应用程序. 本质上他在底层使用LXC启动一个Linux Container,通过cgroup等机制对不同的container内运行的应用程序进行隔离,权限管理和quota分配等

每个container拥有自己独立的各种命名空间(亦即资源)包括:

PID 进程, MNT 文件系统, NET 网络, IPC , UTS 主机名 等

 

Control groups 控制组

记录,限制,隔离进程使用物理资源的一种机制,用来分配资源。

最初是有Google工程师提出并实现的。

2007年

资源限制

优先级设定

资源计量

资源控制

 

docker容器的能力

1.文件系统的隔离:每个容器都有自己的root文件系统

2.进程隔离:每个容器都运行在自己进程环境中

3.网络隔离:容器间的虚拟网络接口和IP地址都是分开的

4.资源隔离和分组:使用cgroups将CPU和内存之类的

资源独立分配给每个docker容器。

 

Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor)。Hypervisor是所有虚拟化技术的核心。非中断地支持多工作负载迁移的能力是Hypervisor的基本功能。当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。

 

mac中安装docker

使用boot2Docker:

1.轻量级的Linux发行版,为docker定制

2.virtualbox Vm

3.docker客户端

4.管理工具

 

boot2Docker启动过程

1.建立$HOME/.boot2docker目录

2.创建一个virualbox ISO镜像

3.启动虚拟机并运行docker守护进程

 

1.创建一个文件夹

mkdir -p ~/.boot2docker

2.拷贝iso镜像

if [ ! -f ~/.boot2docker/boot2docker.iso ]; then cp /usr/local/share/boot2docker/boot2docker.iso ~/.boot2docker/ ; fi

3.初始化boot2docker

/usr/local/bin/boot2docker init

4.启动boot2docker镜像

/usr/local/bin/boot2docker up

5.初始化shell环境变量

$(/usr/local/bin/boot2docker shellinit)

6.查看docker版本

docker version

 

什么是容器

一种虚拟化的方案

操作系统级别的虚拟化

只能运行相同或者相似内核的操作系统

依赖于Linux内核特性:namespace和cgroups

 

 

虚拟机需要模拟硬件的行为:动辄需要几个G的内存

 

 

 

 

 

 

daoCloud命令

dao pull ubuntu

 

搜索

docker search centos

下载

docker pull centos

历史记录

docker history image_name

 

docker ps 查看当前运行的容器

docker ps -a 查看所有容器

 

docker images 查看所有镜像

docker rm #删除容器

docker rmi #删除image

docker rm 'docker ps -a -q' 删除所有容器

 

国内镜像操作手册

http://dockerpool.com/article/1419997003

 

国内镜像网址

https://dashboard.daocloud.io

 

中文文档

http://dockone.io/article/102

 

docker官方学习地址

https://www.docker.com

查看原文:http://www.baowenwei.com/archives/811

你可能感兴趣的:(docker学习笔记(一))