Docker的介绍和安装(1)
一、虚拟化简介
1、虚拟化概念
计算机虚拟化(Computing Virtualization),一种资源管理技术,是指通过虚拟化技术将一台计算机的各种实体资源 , 如处理器 , 网络 , 内存及存储等 , 抽像 , 转换后呈现出来 , 打破实体结构间的不可切割的障碍,虚拟成多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化使用软件的方法重新定义划分 IT 资源,可以实现 IT 资源的动态分配、灵活调度、跨域共享,提高 IT 资源利用率,使 IT 资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。
虚拟化目标 :
同一主机上运行多个系统或应用 , 从而提高系统资源的利用率 , 同时带来降低成本 , 方便管理和容错容灾
2、虚拟化级别
(1)完全虚拟 -- 处理器密集型技术,因为它要求 hypervisor 管理各个虚拟服务器,并让它们彼此独立 (Vmware/Virtual PC)
(2)准虚拟 -- 改动客户操作系统,让它以为自己运行在虚拟环境下,能够与 hypervisor 协同工作 (para-virtualization)
(3)系统虚拟 -- 没有独立的 hypervisor 层。相反,主机操作系统本身就负责在多个虚拟服务器之间分配硬件资源,并且让这些服务器彼此独立
(4)桌面虚拟化—桌面虚拟化主要功能是将分散的桌面环境集中保存并管理起来,包括桌面环境的集中下发,集中更新,集中管理。桌面虚拟化使得桌面管理变得简单,不用每台终端单独进行维护,每台终端进行更新
所以,Docker 和其他容器(container)技术都属于系统虚拟化范畴
3、虚拟化类型
对于系统虚拟化技术来说,虚拟层为用户提供了一个完整的虚拟机:包括内核在内的一个完整的系统镜像。 CPU 虚拟化技术可以为每个用户提供一个独享且和其他用户隔离的系统环境,虚拟层可以为每个用户分配虚拟化后的 CPU 、内存和 IO 设备资源
物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest)。那么 Host 是如何将自己的硬件资源虚拟化,并提供给 Guest 使用的呢?
这个主要是通过一个叫做 Hypervisor 的程序实现的。根据 Hypervisor 的实现方式和所处的位置,虚拟化按照结构分为两种类型:1型虚拟化和2型虚拟化。
4、虚拟化分类
1型虚拟化
Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。Hypervisor 实现方式一般是一个特殊定制的 Linux 系统。Xen 和 VMWare 的 ESXi 都属于这个类型。
2型虚拟化
物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作为 OS 上的一个程序模块运行,并对管理虚拟机进行管理。KVM、VirtualBox 和 VMWare Workstation 都属于这个类型。
理论上讲:
1型虚拟化一般对硬件虚拟化功能进行了特别优化,性能上比2型要高;
2型虚拟化因为基于普通的操作系统,会比较灵活,比如支持虚拟机嵌套。嵌套意味着可以在KVM虚拟机中再运行KVM。
容器位于前两者之上,以进程的形式存在于操作系统之中
容器为应用程序提供了隔离的运行空间:每个容器内都包含一个独享的完整用户环境空间,并且一个容器内的变动不会影响其他容器的运行环境。为了能达到这种效果,容器技术使用了一系列的系统级别的机制诸如:利用Linux namespaces 来进行空间隔离,通过文件系统的挂载点来决定容器可以访问哪些文件,通过 cgroups 来确定每个容器可以利用多少资源。此外容器之间共享同一个系统内核,这样当同一个库被多个容器使用时,内存的使用效率会得到提升。
二、docker简介
1、容器虚拟化
容器( container-based )虚拟化方案,充分利用了操作系统本身已有的机制和特性,以实现轻量级的虚拟化(每个虚拟机安装的不是完整的虚拟机),甚至有人把他称为新一代的虚拟化技术, Docker 无疑就是其中的佼佼者
在一台服务器上同时运行上百个虚拟机,肯定会被认为是痴人说梦,而在一台机器上同时运行一千个 Docker 容器,这已成为现实
2、Docker 的目标:
Build,Ship and Run Any App,Anywhere— 即通过对应用组件的封装 (Packaging), 发布(Distribution), 运行(runing) 等生命周期的管理 , 达到应用组件级别的”一次封装 , 到处运行”。
3、docker的组成
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
(1)dockerClient客户端
(2)Docker Daemon守护进程
(3)Docker Image镜像
(4)DockerContainer容器
容器:
存储、运输工具
实现对容器内部的物品实现包含(实现了一个相对隔离的环境)
容器:模拟(虚拟)出一个相对隔离的空间
镜像:
用来创建容器的模版,放在镜像仓库中,例如nginx,redis,httpd等
4、docker重要网站
Docker官网:https://www.docker.com/
Docker官方文档:https://docs.docker.com/
Docker仓库:https://hub.docker.com/
Docker中文社区:http://www.docker.org.cn/
- Docker官方英文资源:
- docker官网:http://www.docker.com
- Docker windows入门:https://docs.docker.com/windows/
- Docker Linux 入门:https://docs.docker.com/linux/
- Docker mac 入门:https://docs.docker.com/mac/
- Docker 用户指引:https://docs.docker.com/engine/userguide/
- Docker 官方博客:http://blog.docker.com/
- Docker Hub: https://hub.docker.com/
- Docker开源: https://www.docker.com/open-source
- Docker中文资源:
- Docker中文网站:http://www.docker.org.cn
- Docker入门教程: http://www.docker.org.cn/book/docker.html
- Docker安装手册:http://www.docker.org.cn/book/install.html
- 一小时Docker教程 :https://blog.csphere.cn/archives/22
- Docker纸质书:http://www.docker.org.cn/dockershuji.html
- DockerPPT:http://www.docker.org.cn/dockerppt.html
三、Docker的特点
1、优点:
(1)启动快,资源占用小 , 资源利用高,快速构建标准化运行环境
(2)创建分布式应用程序时快速交付和部署,更轻松的迁移和扩展,更简单的更新管理
2、局限:
(1)Docker 是基于 Linux 64bit 的,无法在 windows/unix 或 32bit 的 linux环境下使用
(2)LXC 是基于 cgroup 等 linux kernel 功能的,因此 container 的 guest 系统只能是linux
(3)隔离性相比 KVM 之类的虚拟化方案还是有些欠缺,所有 container 公用一部分的运行库
(4)管理相对简单,主要是基于 namespace 隔离
(5)cgroup 的 cpu 和 cpuset 提供的 cpu 功能相比 KVM 的等虚拟化方案相比难以度量 ( 所以 dotcloud 主要是按内存收费 )
(6)docker 对 disk 的管理比较有限(docker磁盘存储在一个目录下)
(7)container 随着用户进程的停止而销毁, container 中的 log 等用户数据不便收集
3、docker与虚拟机的比较:
(1)启动快比虚拟机 , 可以秒级启动
(2)对资源占用小 , 宿主机上可运行千台容器
(3)方便用户获取 , 分布 , 和更新应用镜像 , 指令简单 , 学习费用低
(4)通过 Dockerfile 配置文件来灵活的自动创建和部署镜像 & 容器 , 提高工作效率
(5)Docker 除了运行其中应用外 , 基本不消耗其他系统资源 , 保证应用性能同时 , 尽量减小系统开销
- docker与kvm的对比
- kvm:
- 1. 虚拟机
- 2. 使用复杂
- 3. 启动过程相对慢(分钟)
- 4. 模版文件较大
- 5. 和物理完全隔离
- 6. 模拟的是一个完整系统,可以登录并实现管理
- docker:
- 1. 直接虚拟出来一个用户空间
- 2. 使用简单
- 3. 启动非常块(秒级)
- 4. 模版文件很小(体积小)(容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包)
- 5. 在一定程度上和物理机隔离
- 6. 仅仅是模拟一部分用户空间,不方便管理
4、docker使用理由
(1)快速部署服务
(2)多租户
(3)实现隔离
(4)让一个主机运行多个容器
(5)提高开发效率
(6)简化配置过程
(7)实现软件的跨平台
5、docker的主要用途:
(1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
(2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
(3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。
四、docker的安装
1、docker的安装
安装docker需要配置网络源
(1)配置阿里云的网络源
第一步:下载阿里云的docker安装包(yum仓库的目录下)
- [root@ren7 yum.repos.d]# wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第二步:配置extra和epel源
- [extra]
- name=centos extra
- enabled=1
- gpgcheck=0
- baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
- [epel]
- name=epel
- enabled=1
- gpgcheck=0
- baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/
第三步:使用yum安装
docker-ce 是社区版,免费的
docker-ee 是企业版,收费的
- [root@ren7 ~]# yum install docker-ce -y
(2)配置云唯图书馆的源
第一步:vim /etc/resolv.conf
- nameserver 172.16.254.110
第二步:下载docker安装脚本
- [root@ren7 ~]# wget http://download2.yunwei.edu/shell/docker.tar.gz
第三步:解压并执行安装脚本
- [root@ren7 ~]# tar xzf docker.tar.gz
- [root@ren7 ~]# cd docker
- [root@ren7 docker]# ls
- ca.crt docker-app.tar.gz docker.sh remove.sh
- [root@ren7 docker]# ls
- ca.crt docker-app.tar.gz docker.sh remove.sh
- [root@ren7 docker]# sh docker.sh
- docker
- docker-compose
- docker-containerd
- docker-containerd-ctr
- docker-containerd-shim
- dockerd
- docker-init
- docker-proxy
- docker-runc
- Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /etc/systemd/system/docker.service.
- [root@ren7 docker]# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- [root@ren7 docker]# cat docker.sh
- #/bin/bash
- tar zxvf docker-app.tar.gz -C /usr/local/bin/
- mkdir -p /etc/docker
- mkdir -p /etc/docker/certs.d/reg.yunwei.edu
- cp ca.crt /etc/docker/certs.d/reg.yunwei.edu/
- echo "172.16.254.20 reg.yunwei.edu">>/etc/hosts
- cat <<EOF>/etc/docker/daemon.json
- {
- "registry-mirrors": ["http://cc83932c.m.daocloud.io"],
- "max-concurrent-downloads": 10,
- "log-driver": "json-file",
- "log-level": "warn",
- "log-opts": {
- "max-size": "10m",
- "max-file": "3"
- }
- }
- EOF
- cat <<EOF>/etc/systemd/system/docker.service
- [Unit]
- Description=Docker Application Container Engine
- Documentation=http://docs.docker.io
- [Service]
- Environment="PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin"
- ExecStart=/usr/local/bin/dockerd
- ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
- ExecReload=/bin/kill -s HUP $MAINPID
- Restart=on-failure
- RestartSec=5
- LimitNOFILE=infinity
- LimitNPROC=infinity
- LimitCORE=infinity
- Delegate=yes
- KillMode=process
- [Install]
- WantedBy=multi-user.target
- EOF
- systemctl daemon-reload && systemctl enable docker.service && systemctl start docker.service
2、docker镜像加速配置
因为docker镜像都在国外,而国内网络访问的比较慢,后续拉取docker镜像十分缓慢,所以在安装docker之后需要配置加速器。
(1)获取阿里云加速地址
第一步:打开阿里云官网
https://www.aliyun.com/?utm_content=se_1000301910
第二步:选择产品与服务 --->镜像与服务
第三步:选择镜像加速器,获取自己docker的加速器地址
(2)vim /etc/docker/daemon.json 中写入如下内容(如果文件不存在请手动创建)
- {
- "registry-mirrors": ["https://registry.docker-cn.com","https://twk069lg.mirror.aliyuncs.com","http://cc83932c.m.daocloud.io"]
- }
添加一个网址即可
(3)重启服务
- systemctl restart docker
Docker的介绍和安装(1)的更多相关文章
- Docker的介绍与安装教程
基于Windows系统下docker的介绍与安装教程以及更换docker镜像源教程 目录 基于Windows系统下docker的介绍与安装教程以及更换docker镜像源教程 Docker的核心概念 D ...
- Docker入门-介绍和安装
Docker容器 Docker是什么 Docker最初是dotCloud公司创建人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并于 ...
- Docker之介绍与安装
Docker 说明 本章,我们主要从Docker简介.Docker中几个核心概念和Docker安装这几个方面对Docker进行介绍! 1. Docker 简介 1.1. 什么是 Docker Dock ...
- Docker 学习应用篇之二: Docker的介绍和安装
之前说过Docker的好处,Docker可以集装箱化的部署应用程序.那么Docker是通过什么实现的呢.要理解Docker内部构建,需要先理解Docker的四种部件 1)images:镜像,docke ...
- docker 简单介绍与安装
主机虚拟化(vmware,visual box等) type-Ⅰ type=Ⅱ 主机虚拟化是隔离最彻底的,但是由于多隔了一个虚拟的操作系统,性能会慢一些. 容器虚拟化(docker等) 隔离没有主机虚 ...
- Docker系列一:Docker的介绍和安装
Docker介绍 Docker是指容器化技术,用于支持创建和实验Linux Container.借助Docker,你可以将容器当做重量轻.模块化的虚拟机来使用,同时,你还将获得高度的灵活性,从而实现对 ...
- Docker的介绍及安装
什么是Dcoker? 引用度娘的解释:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 linux 机器上,也可以实现虚拟化.容器 ...
- 学习Mysql过程中拓展的其他技术栈:Docker入门介绍
一.Docker的介绍和安装 1. Docker是什么 百度百科的介绍: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linu ...
- Docker Compose 介绍安装
Compose介绍 Compose是一个定义和管理多容器的工具,也是一种容器编排工具,前身是Pig,使用Python语言编写.使用Compose配置文件描述多个容器应用的架构,biubiu使用什么镜像 ...
随机推荐
- Dynamics CRM存放选项集记录的表
我们在做一些自定义查询的时候会去查询选项集字段的值,但是实体的选项集字段是一个整型字段,直接查询并不能找到对应的选项集的显示内容.所以我们需要找到存放选项集键值对的表来做关联查询找到我们想要的值. D ...
- Facebook资深工程师带你学Python核心技术
人工智能时代下,Python毫无疑问是最热的编程语言.在推开Python的大门后却发现,Python入门容易但精通却不易. 想要精通这门语言,必须真正理解知识概念,比如适当从源码层面深化认知,然后熟悉 ...
- 记一次metasploitable2内网渗透之2049端口NFS漏洞
0x01.NFS简介 NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器.操作系统以及低层传送协议无关的存取远程文件的操作.RPC采用了XDR的支持.X ...
- ElasticSearch-03-远行、停止
在Windows下执行elasticsearch.bat 在Linux下运行./elasticsearch 指定集群名称和节点名称: ./elasticsearch --cluster.name my ...
- 6. VUE 指令-概述
指令 (Directives) 是带有 v- 前缀的特殊特性.指令特性的值预期是单个 JavaScript 表达式 (v-for是例外情况,稍后我们再讨论).指令的职责是,当表达式的值改变时,将其产生 ...
- seaweedfs分布式文件使用示例
安装seaweedfs分布式文件存储 启动一个测试集群:2 filer(8801-8802) + 3 master(9331-9333) + 3 volume(8081-8083) 下载seaweed ...
- Zabbix页面管理
Zabbix页面管理 Screen Screen翻译成中文为"屏幕",在一些交通管理中心.保安监控.预警中心等等地方都比较常见到监控视频,视频上有多块小视频,实际上Zabbix S ...
- PHP大牛笔记收藏
PHP大牛笔记收藏 Do not use PHP references 未完,待续
- C/C++ 进程代码注入与提权/降权
如果将shellcode注入到具有特定权限的进程中,我们就可以获得与该进程相同的权限,此方法可以用于提权与降权操作,注入有多种方式,最简单的是直接将metasploit生成的有效载荷直接注入到目标进程 ...
- LA3602DNA序列
题意: 给你一个一些DNA序列(只有ACGT)然后让你构造一个序列,使得所有的序列到他的Hamming距离最小,所有的序列包括构造的序列长度都是N,Hamming表示两个序列的不同字符位置个 ...