Docker初识

1. 什么是Docker?
是一个开源的容器引擎,可以方便对容器进行管理(容器是一种轻量级、可移植、自包含的软件打包技术)
是基于容器的轻量虚拟化技术,基于内核的Cgroup和Namespace技术,并没有传统虚拟化的Hypervisor层,

通信上,Docker并不直接与内核交互,而是通过Libcontainer(真正意义上的容器引擎)来交互
通过clone系统调用来直接创建容器,通过 pivot_root 系统调用来进入容器, 通过直接操作cgroupfs文件来实现对资源的管控

 

优点:(Docker对 Union mount的应用)
1) 性能与物理机十分接近
2) 极大提高磁盘利用率(对层级镜像的创新应用)
即不同的容器共享底层的只读镜像,通过写入自己特有的内容后添加新的镜像层,该新增的镜像层和下层的只读镜像一起
作为基础镜像被更上层的用户使用;
3) 提高内存使用率
不同的容器访问同一个文件时,只会占用一份内存(需要使用支持 Union mount 的文件系统,比如 AUFS 和 Overlay)

相对于传统虚拟化的优点:

1)更高效得利用系统资源

2)更快速的启动时间:秒级启动

3)更轻松的迁移

 

2.

Cgroup:

Linux内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如:cpu,memory,IO等等)的机制

http://blog.51cto.com/speakingbaicai/1359825

Namespace:

主要做访问隔离。其原理是针对一类资源进行抽象,并将其封装在一起提供给一个容器使用

 

3.

容器=Cgroup+Namespace+rootfs+容器引擎(用户态工具)。 
其中各项功能分别为: 
Cgroup:资源控制; 
Namespace:访问隔离; 
rootfs:文件系统隔离; 
容器引擎:生命周期控制; 

 

4. 三个基本概念(镜像、容器、仓库)

镜像:分层存储

容器:如果镜像是类的话,容器则是实例,镜像是静态的定义,容器是运行的实体,可被创建、启动、删除

仓库:ubuntu:14.04其中ubuntu是仓库的名称,14.04是指定版本的镜像

 

5. 使用镜像

docker pull ubuntu:16.04

docker image ls

docker image rm $(docker image ls -q redis)   #删除镜像

 

在 Dockerfile 文件所在目录执行:

docker build -t nginx:v3 .    #新建一个镜像

 

docker run --name webserver -d -p 80:80 nginx

--name webserver : 将容器命名为webserver

-d:后台运行容器,并返回容器ID;

-p 80:80  将容器的80端口映射到主机的80端口

 

docker kill $(sudo docker ps -q)  #停止运行的容器

docker ps -q  #显示正在运行的容器id

 

6. 应用场景

公司:

在单板上用docker比传统虚拟机更便捷

用docker搭建openstack环境(为每一项服务都做了一份docker镜像,一个控制节点,一个计算节点)

家里:

尝试新的编程语言/数据库/命令行工具

在unbuntu下使用centos或者suse

 

posted @ 2017-12-23 16:05  Hsinwang  阅读(213)  评论(0编辑  收藏  举报