1、剖析虚拟化技术概念

1)虚拟化是一个主流的技术,虚拟的,看不见的,但是可以落地的,用于资源管理的一项技术;

2)虚拟化的技术诞生的目标就是为了解决资源管理和资源利用的解决方案;

3)虚拟化就是将物理设备转变为逻辑上可以管理资源,以打破物理之间结构的壁垒,让计算元件运行在虚拟的基础上,而不是真实的物理设备上;

4)虚拟化的底层是要进行虚拟的物理机器,通过虚拟化技术可以将物理机虚拟生成N个虚拟机,应用程序、软件(Apache、MYSQL、Nginx、Redis、Tomcat)运行在虚拟机中,而不是物理机;

5)假设公司需求,需要部署100个Nginx服务,有如下的方案:

  • 采购100台低配物理机,每台物理机部署一个Nginx服务;
  • 采购10台高配物理机,每台物理机虚拟10台虚拟机(配置同低配物理机),每个虚拟机部署一个Nginx服务;(企业推荐)

6)虚拟化技术,主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件资源。

2、Docker虚拟化技术概念

1)虚拟化技术进行分类,分为三大类:完全虚拟化、半虚拟化、轻量级虚拟化(Docker),虚拟化技术分层的抽象,如图所示:

2)Docker技术的产物是Docker容器(集装箱),容器中存放各种依赖文件、库、应用软件,可以打包繁杂的库文件、依赖程序到容器中,可以方便迁移到其他的平台;

3)传统虚拟化技术,如果想部署Nginx服务,必须基于底层硬件-VMM-GuestOS-Nginx服务;

4)Docker虚拟化技术,如果想部署Nginx服务,必须基于底层硬件-VMM-Nginx服务;

3、0开始构建Docker虚拟化平台

1)Docker官方要求Linux系统内核3.8+,对应的Linux操作系统发行版本:CentOS、Redhat、Ubuntu、Suse等;

目前,CentOS 仅发行版本中的内核支持 Docker。

Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。

Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

Linux查看版本命令:

cat /etc/redhat-release           //查看系统版本
uname -a //查看内核版本
df -h //查看磁盘容量

2)生产环境最好使用CentOS7.x+;

3)基于CentOS6.x安装部署Docker平台,指令如下:

yum install epel-release docker-io lxc device-map* cgroup -y

4)基于CentOS7.x安装部署Docker平台,指令如下:

yum -y install docker         

检查是否按照成功

docker version 

若输出了 Docker 的版本号,说明安装成功了,可通过以下命令启动 Docker 服务:

service docker start

一旦 Docker 服务启动完毕,就可以开始使用 Docker 了。

5)docker命令

使用命令前先理解docker三组件的关系:

  docker 三组件:镜像、容器、仓库:

  1.镜像
          Docker运行容器前需要本地存在对应的镜像。
       Docker镜像,类似ISO镜像文件,静止的,不能被修改,一个模板文件;
            镜像可以用来创建Docker容器的。一个镜像可以包含一个完整的操作系统环境和用户需要的其它应用程序。在docker hub 里面有大量现成的镜像提供下载。docker的镜像是只可读的,一个镜像可以创建多个容器。
       2.容器
           Docker利用容器来开发、运行应用。
      Docker容器,基于Docker镜像运行的实体,类似程序和进程的关系,进程是程序(软件)运行的实体;
           容器是镜像创建的实例。它可以被启动、开始、停止、删除。每个容器都是 相互隔离的、保证安全的平台。
        3.仓库
           仓库是集中存放镜像文件的场所。
           每个 仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
           最大的公开仓库是DockerHub,存放了数量庞大的镜像供用户下载。国内的公开 仓库包括DockerPool等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。

基础命令:

docker search tutorial                    //检索名字为“tutorial”的镜像

docker pull medicean/vulapps:s_struts2_s2-052                    //从镜像仓库拉取镜像到本地
docker images                            //查看已下载的镜像

docker run -d -p 8888:8080 medicean/vulapps:s_struts2_s2-052       //启动环境

参数说明:

  • -d:让容器在后台运行。
  • -p:将容器内部使用的网络端口映射到我们使用的主机上。(如8080为st2-052镜像的端口,将8080映射到本地的8888端口,即可通过访问本地ip:8888来访问我们搭建的镜像环境)
docker ps           查看当前正在运行的容器
docker ps -a docker ps -a可以看到所有的容器,包括正在运行的和已经停止的

docker stop ed                //停止某个正着运行的容器
docker start ed //如果想继续使用,用start来启动它
docker stop ed //想删除这个容器、要先停止这个容器、用stop就可以停止
docker rm ed //这个用来删除已经停止的容器
docker rmi imgesid          //删除镜像
docker run -t -i +镜像id /bin/bash //启动一个bash终端。并允许用户进行连接
//-t 让docker分配一个伪终端,并绑定到容器的标准输入上,-i 则让容器的标准输入保持打

6)使用yum卸载docker

yum list installed | grep docker                 //列出安装的软件包

yum -y remove docker-engine.x86_64              //移除软件包

rm -rf /var/lib/docker                        //删除所有镜像、容器和组
笨鸟先飞早入林,笨人勤学早成材。

转载请注明出处:
撰写人:fox-yu http://www.cnblogs.com/fox-yu/

Docker---初识到使用的更多相关文章

  1. Docker初识

    <Docker--从入门到实践>是Docker技术的入门教程,学习时长两天,现整理关键点如下: 1. 什么是Docker? 轻量级操作系统虚拟化解决方案:Go语言实现:下图很好地说明了Do ...

  2. docker --- 初识

    Docker简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).ba ...

  3. docker 初识之二(简单发布ASP.NET Core 网站)

    在发布ASP.NET Core网站以前,先介绍一下DaoCloud 一个免费的docker云容器服务平台.登陆官方网站,创建一台docker主机,这台主机有120分钟的使用时间,对于鄙人学习使用正好合 ...

  4. 1021 docker初识

    docker与虚拟机相比,没有虚拟化内核,转而使用宿主机的内核.因此docker更轻更快 docker缺点:后端兼容性测试需求.把软件安装在不同的操作系统上进行测试,观察软件运行是否良好. 不能用do ...

  5. Docker初识笔记

    Docker docker说白了就是:环境打包 我们能用docker什么? 1.如果配置好本地的linux环境交接给其他人,很麻烦,交接时要告诉他,装这个装那个,还可能出现问题,那我直接把这个环境放到 ...

  6. Docker 初识之路

    一. 安装配置 1.安装依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm2   2.设置阿里云镜像源 sudo yu ...

  7. Docker学习のDocker初识

    一.Docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然 ...

  8. docker 初识1

    学习网址 https://git.oschina.net/yangllsdev/docker-training https://docs.docker.com/engine/installation/ ...

  9. docker初识-docker安装、基于docker安装mysql及tomcat、基本命令

    一.docker是什么 用go语言开发,开源的应用容器引擎,容器性能开销极低 二.整体架构图 Docker 包括三个基本概念: 镜像(Image):Docker 镜像(Image),就相当于是一个 r ...

  10. Docker 学习应用篇之一: 初识Docker

    Docker 自从2013年以来就非常的火热,无论是从github上的代码活跃度,还是Redhat在RHE6.5中集成对Docker的支持,等等.第一次接触Docker,还是老师给我们介绍的. 1.初 ...

随机推荐

  1. js区别对象和数组的三种方法

    var arr = {}||[];            区分arr是数组还是对象            1.arr.constructor                              ...

  2. 通过WordCount解析Spark RDD内部源码机制

    一.Spark WordCount动手实践 我们通过Spark WordCount动手实践,编写单词计数代码:在wordcount.scala的基础上,从数据流动的视角深入分析Spark RDD的数据 ...

  3. Python开发的入门教程(八)-迭代

    介绍 本文主要介绍Python中迭代的基本知识和使用 什么是迭代 在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Ite ...

  4. PHP弱类型hash比较缺陷

    成因分析: == 在进行比较的时候,会先将两边的变量类型转化成相同的,再进行比较 0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,0的多少次方还是0. 因此CTF比赛中需要用到弱类型H ...

  5. 浅谈HASH长度拓展攻击

    前言 最近在做CTF题的时候遇到这个考点,想起来自己之前在做实验吧的入门CTF题的时候遇到过这个点,当时觉得难如看天书一般,现在回头望去,仔细琢磨一番感觉也不是那么难,这里就写篇文章记录一下自己的学习 ...

  6. js中数组扁平化处理

  7. 高可用服务之Keepalived利用脚本实现服务的可用性检测

    上一篇博客主要聊到了keepalived高可用LVS集群的相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13659428.html:keepalive ...

  8. 《C语言进阶剖析》课程目录

    <C语言进阶剖析>学习笔记                                                         本文总结自狄泰软件学院唐佐林老师的<C语言 ...

  9. 第11课 - enum, sizeof, typedef 分析

    第11课 - enum, sizeof, typedef 分析 1. enum介绍 (1)enum是C语言中的一种自定义类型,和struct.union地位相同,格式如下: // enum每个值的最后 ...

  10. [程序员代码面试指南]栈和队列-最大值减去最小值 小于或等于num 的子数组的数量(单调队列)

    题目 给定数组arr和整数num,求数组的子数组中有多少个的满足"最大值减去最小值<=num". 解题思路 分析题目,有结论: 如果数组arr[i...j]满足条件,则它的每 ...