虚拟化简介

虚拟化英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器网络内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。
 

docker介绍

Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。
Docker自2013年以来非常火热,无论是从 github 上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持, 就连 Google 的 Compute Engine 也支持 docker 在其之上运行。
 

docker架构

传统虚拟化分层抽象和docker虚拟化分层抽象的

docker虚拟化实施有以下3个概念

  • docker镜像:镜像是一个静态模板,与常见的iso镜像类似,是一个样板,不能直接修改,可以通过封装生成
  • docker容器:基于docker镜像运行启动的应用或系统,称之为一个docker容器或docker虚拟机
  • docker仓库:docker仓库是存放docker镜像的地方,常见分为公开仓库和私有仓库两种形式

LXC介绍

最早的docker技术为LXC+联合文件系统组合,docker 0.9.0版本开始引入libcontainer,可以视作LXC的替代品,其中LXC负责资源管理,AUFS负责镜像管理,而LXC包括Cgroup(control groups),Namespace,Chroot等组件,并通过Cgroup进行资源管理。

从资源管理上看,Docker,LXC,Cgroup的关系为Cgroup在最底层落实资源管理,LXC在Cgroup上封装了一层,Docker又在LXC封装了一层。

名称空间

docker中为了保证每个容器能够独立运行,互不影响,需要隔离6种资源,也叫名称空间

  1. UTC:主机名和域名
  2. Mount:文件系统
  3. IPC:信号量,消息队列和共享内存
  4. PID:进程编号
  5. User:用户和用户组
  6. Network:网络设备,端口等

Cgroup

blkio:快设备IO

cpu:CPU

cpuacct:CPU资源使用报告

cpuset:多处理器平台上的cpu集合

devices:设备访问

freezer:挂起或恢复任务

memory:内存用量报告

perf_event:对cgroup中的任务进行统一的性能测试

net_cls:cgroup中任务创建的数据报文的类别标识符

Chroot

chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 `/`,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 `/` 位置。

在经过 chroot 之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件,因此它带来的好处大致有以下3个:

  1. 增加了系统的安全性,限制了用户的权力;

    在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。这个一般是在登录 (login) 前使用 chroot,以此达到用户不能访问一些特定的文件。

  2. 建立一个与原系统隔离的系统目录结构,方便用户的开发;

    使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译以及一些与系统不相关的独立开发。

  3. 切换系统的根目录位置,引导 Linux 系统启动以及急救系统等。

    chroot 的作用就是切换系统的根位置,而这个作用最为明显的是在系统初始引导磁盘的处理过程中使用,从初始 RAM 磁盘 (initrd) 切换系统的根位置并执行真正的 init。另外,当系统出现一些问题时,我们也可以使用 chroot 来切换到一个临时的系统。

名称空间内核对照表

docker容器引擎进化史:LXC->libcontainer->runC

企业版:docker-ee

社区版:docker-ce

docker体系结构

安装

第一步,下载docker的镜像源

docker的镜像网站(清华大学)
https://mirrors.tuna.tsinghua.edu.cn/

cd /etc/yum.repos.d/
wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce -y

第二步,配置加速器

[root@localhost ~]# cat /etc/docker/daemon.json
{
"registry-mirrors":["https://registry.docker-cn.com","https://l10nt4hq.mirror.aliyuncs.com"]
}

第三步,重启docker服务

[root@localhost ~]# systemctl restart docker

docker常用命令

docker version                #查看docker版本
docker info #查看docker信息
docker images pull #从镜像仓库拉取镜像
docker images #查看镜像
docker container create #创建容器
docker attach #进入一个正在运行的容器
docker logs #查看容器日志
docker kill #结束掉一个或者多个docker容器
docker version #查看docker版本
docker search #搜索镜像
docker rmi #删除镜像
docker rm #删除容器
docker ps #查看当前运行的容器
docker ps -a #查看所有容器,包括停止的。
docker start #启动当前已经存在的docker
docker stop #停止已经启动的docker
docker logs #查看容器的日志

拖拽一个镜像

[root@localhost ~]# docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
0f8c40e1270f: Pull complete
Digest: sha256:1303dbf110c57f3edf68d9f5a16c082ec06c4cf7604831669faf2c712260b5a0
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest

创建一个容器并查看

[root@localhost ~]# docker create -it --name mybox busybox
b48d2548fe55d39b952ab149d36f4097adb9a53deec16baedb0da8719c8681e5 [root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
719ddab5c791 busybox "sh" 4 seconds ago Created keen_buck

启动容器

[root@localhost ~]# docker start b48d2548fe55
b48d2548fe55
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b48d2548fe55 busybox "sh" About a minute ago Up About a minute mybox

直接拖拽镜像并且启动可以用run

[root@localhost ~]# docker run --name mybox -it -d busybox
bb53c78337a9f8c9425adb18a9313f504f3db94b7390134117cefc58e128aa9c
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb53c78337a9 busybox "sh" 4 seconds ago Up 4 seconds mybox

docker介绍和安装(一)的更多相关文章

  1. docker 介绍及安装操作

    docker 介绍及安装操作 1.docker概述 2.docker安装及操作 1.docker概述: Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源 是在L ...

  2. Docker 介绍及安装

    Docker介绍 Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建.运行.分发容器). Docker基于go语言并遵从Apache2.0协议 ...

  3. Docker介绍及安装

    Docker介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  4. Docker介绍及安装(一)

    一.Docker简介 1.1 docker介绍 Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的cgroup,namespace,以及 AUFS 类的 ...

  5. Docker 介绍和安装(一)

    # 下载阿里云的 Centos7 的docker.repo # step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-pers ...

  6. Docker介绍及安装详解

    1:Docker简介 Docker 是一种运行于 Linux 和 Windows 上的软件,用于创建.管理和编排容器.Docker 是在 GitHub 上开发的 Moby 开源项目的一部分.Docke ...

  7. Docker介绍,安装和常用的命令

    Docker是Google公司推出的Go语言开发的,基于Linux内核的cgroup,namespace,AUFS类的UnionFS等技术.对进程进行封装格力,属于操作系统层面的虚拟化技术.隔离的进程 ...

  8. docker介绍与安装

    .docker是什么 Docker是一个开源的应用容器引擎,使用Go语言开发,基于Linux内核的cgroup,namespace,Union FS等技术,对应用进程进行封装隔离,并且独立于宿主机与其 ...

  9. docker介绍 架构 安装

    Docker是什么? docker是一个开源的软件部署解决方案: docker也是轻量级的应用容器框架: docker可以打包.发布.运行任何的应用. Docker 是一个开源的应用容器引擎,基于 G ...

随机推荐

  1. 微信小程序如何做金额输入限制

    引言:金额输入时,需求如下: 1)首位不能出现0或者小数点(.) 2)仅保留两位小数 3)仅保留一个小数点(.),不允许出现多个. 1.wxml核心代码: <!-- 1.adjust-posit ...

  2. docker 修改镜像和容器的存放路径(最新自己实践了第三种方法)

    docker info :查看docker的存储等相关信息. 将路径修改至挂载磁盘中 前提:磁盘已挂载成功 方法一: 1.停止docker 服务 service docker stop 2.备份数据到 ...

  3. .deb 包如何安装到指定目录; Ubuntu; Debian like;

    有时候,我们没有root用户的时候,我们进行安装deb包就不能之间安装到系统之中了: 为了方便,我们可以直接解压 dpkg -x same.deb .; 直接解压到当前目录,然后在配置环境变量,即可启 ...

  4. python直接赋值、浅拷贝、深拷贝的区别

    一:直接赋值 赋值,就是对象的引用,给对象起别名. i = 8j = iprint("值是:",i, "地址:",id(i))print("值是:&q ...

  5. 题解:SPOJ1026 Favorite Dice

    原题链接 题目大意 给你一个n个面的骰子,每个面朝上的几率相等,问每个面都被甩到的期望次数 题解 典型的赠券收集问题. 我们考虑当你手上已有\(i\)种不同的数,从集合中任选一个数得到新数的概率,为\ ...

  6. [C5W3] Sequence Models - Sequence models & Attention mechanism

    第三周 序列模型和注意力机制(Sequence models & Attention mechanism) 基础模型(Basic Models) 在这一周,你将会学习 seq2seq(sequ ...

  7. 2019-2020-1 20199305《Linux内核原理与分析》第六周作业

    系统调用的三层机制(下) (一)给MenuOS增加命令 (1)打开虚拟机,首先用rm -rf menu指令删除当前的menu目录,然后用git clone重新克隆一个新版本的menu,进入menu,运 ...

  8. react+dva 全局model中异步获取数据state在组件中取不到值

    先上结论,不是取不到,是写法有问题. 全文分4部分,1是问题描述,2是一开始的解决想法(错误做法),3是问题产生原因的思考,4是正常解决方法.只想看结论直接跳4 1.问题描述 接触react dva一 ...

  9. 设计模式-Template(行为模式) 采用 继承的方式 将算法封装在抽象基类中,在子类中实现细节。利用面向对象中的多态实现算法实现细节和高层接口的松耦合。

    以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //Template.h class AbstractClass { public: virtual ~AbstractCla ...

  10. 《Effective-Ruby》读书笔记

    本篇是在我接触了 Ruby 很短一段时间后有幸捧起的一本书,下面结合自己的一些思考,来输出一下自己的读书笔记 前言 学习一门新的编程语言通常需要经过两个阶段: 第一个阶段是学习这门编程语言的语法和结构 ...