学习地址:http://blog.51cto.com/lizhenliang  和 他的视频

一  Docker 的介绍和安装

二 镜像管理

三 容器管理

四 管理应用程序数据

五 使用Docker知识部署简易的LNMP站点

六 网络管理

七 Dockerfile

八 企业级镜像仓库Harbor

九 图形化界面管理

十 构建容器监控系统

一 Docker 的介绍和安装

1.1 Docker是什么

1.2 Docker的体系结构

1.3 内部组件

1.4 虚拟机和容器的区别

1.5 Docker的应用场景

1.6 Linux 安装Docker

  1. 1 Docker是什么:

Docker是一个开源的应用容器引擎,使用Go语言开发,基于Linux内核的cgroup, namespace, Union FS等技术,对应用进程进行封装隔离,并且独立于宿主机与其他进程,这种运行时封装的状态称为容器。Docker早起版本实现是基于LXC,并进一步对其封装,包括文件系统、网络互联、镜像管理等方面,极大简化了容器管理。从0.7版本以后开始去除LXC,转为自行研发的libcontainer,从1.11版本开始,进一步演进为使用runC和containerd。Docker理念是将应用及依赖包打包到一个可移植的容器中,可发布到任意Linux发行版Docker引擎上。使用沙箱机制运行程序,程序之间相互隔离。

它是通过内核虚拟化技术来提供容器的资源的隔离和安全保证等等,因为docker是通过操作系统层的虚拟化实现隔离,所以docker容器在运行的时候是不需要额外的虚拟化管理程序,他是内核级别的虚拟化,可以实现更加高效的性能,同事对资源的额外的需求很低,他的最本质的特征,docker是通过隔离来进行创建容器。

  

  1. 2 Docker的体系结构:

我们通过Docker 客户端发送指令,通过Docker引擎来分发指令,是下载镜像或者是创建容器,如果本地有镜像直接引用,如果本地没有就从仓库拉取,通知Containerd 创建容器,Containerd在收到Engine的请求之后会启动一个shim,shim 会让runc提供一个容器的运行环境,runC就会去挂载文件系统,最后runC就会在文件系统启动一个进程。

Containerd:是一个简单的守护进程,使用runC管理容器。向Docker Engine提供接口
Shim:只负责管理一个容器。
runC:是一个轻量级的工具,只用来运行容器。

 

  1. 3 Docker 的内部组件

Namespace

  命名空间,Linux内核提供的一种对进程资源隔离的一种机制,例如进程、网络、挂载点等资源,把他们封装在一个名称空间中,只能看到本容器内的资源

CGroups

  控制组,LInux内核提供的一种限制进程资源的机制:例如CPU、内存等资源

  我们可以在宿主机上通过 ls /sys/fs/cgroup 看到我们队哪些资源进行了限制,限制的资源有   blkio  cpu  cpuacct  cpu,cpuacct  cpuset  devices  freezer  hugetlb  memory  net_cls  net_cls,net_prio  net_prio  perf_event  pids  systemd

UnionFS:

  联合文件系统,支持将不同位置的目录挂载到同一个虚拟文件系统,形成一种分层的模型

  1. 4 虚拟机和容器的区别

以KVM为例和Docker相比

启动时间:

  Docker 秒级启动,KVM分钟级别启动

轻量级:

  容器镜像大小通常以M为单位,虚拟机以G为单位

  容器资源占用小,要比虚拟机部署更加的快速

性能:

  资源共享宿主机内核,系统级虚拟化,占用资源少,没有Hypervisor层开销,容器性能基本接近物理机

  虚拟机需要Hypervisor层支持,虚拟化一些设备,具有完整的GuestOS,虚拟化开销大,因而降低性能,没有容器性能好

安全性:

  由于共享宿主机内核,只是进程级隔阂,因此隔离性和稳定性不如虚拟机,容器具有一定权限范根宿主机内核,存在一定安全隐患

使用要求:
  KVM基于硬件的完全虚拟化,需要硬件CPU虚拟化技术支持

  容器共享宿主主机内核,可运行在主流的Linux发行版,不用考虑CPU是否支持虚拟化技术

应用场景:(http://blog.51cto.com/lizhenliang/1978081)

  节省橡胶木环境部署时间

    单项目打包

    整套项目打包

    新开源技术试用

  环境一致性

  持续集成

  微服务

  弹性伸缩

Linux 安装Docker

就我的环境看一下文档的安装方式:
https://docs.docker.com/install/linux/docker-ce/centos/

我们这里安装ce 版本

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

sudo yum install docker-ce

这里我们现在要是启动的话,我们用的仓库源的地址就是官方的,可能用起来不太方便,我们可以给企改成国内的,然后在启动

systemctl start docker

卸载的方式:

yum remove docker-ce

rm -rf /var/lib/docker

博客总结来源于:http://edu.51cto.com/course/10659.html

Docker的学习的更多相关文章

  1. 在Windows环境中开始Docker的学习和体验

    研究docker有一段时间了,当然我主要的使用环境还是在Linux中,确实很方便. 但也有不少朋友希望使用Windows来工作学习,这里介绍一下在Windows中如何快速开始Docker的学习和体验吧 ...

  2. Docker容器学习梳理 - 应用程序容器环境部署

    关于国内Docker镜像,可以参考:Docker容器学习梳理--基础知识(2) 的Docker镜像使用. 如果我们需要在Docker环境下部署tomcat.redis.mysql.nginx.php等 ...

  3. Docker容器学习梳理 - 日常操作总结

    使用Docker已有一段时间了,今天正好有空梳理下自己平时操作Docker时的一些命令和注意细节: Docker 命令帮助 $ sudo docker Commands: attach Attach ...

  4. docker深入学习

    docker深入学习 一.容器的介绍和容器的发展史 为什么要学习容器? 在openstack之后,目前互联网最火热的技术莫过于docker容器了,早在2015年,京东技术备战双11就是使用了10万+D ...

  5. 服务器搭建远程docker深度学习环境

    服务器搭建远程docker深度学习环境 本文大部分内容参考知乎文章 Docker+PyCharm快速搭建机器学习开发环境 搭建过程中出现ssh连接问题可以查看最后的注意事项 Docker Docker ...

  6. Docker命令学习

    今天更换腾讯云系统的时候发现了多了个CoreOS,据说是专门运行docker的轻量系统,顺便学习一下docker命令. 1. docker version 显示 Docker 版本信息. 2. doc ...

  7. 有关docker的学习链接

    本文是自己搜索的比较好的网上资源,便于有兴趣者查阅. 英文官网 https://docs.docker.com/engine/getstarted/ 中文入门手册 http://www.docker. ...

  8. Docker个人学习总结

    最近一段时间学习了下Docker,关于Docker的安装,运用什么的在这里我不会过多的说明,我只说我对于Docker的一些理解,附加我用于记录的少量代码. 刚开始学习Docker的时候,找资料在网上看 ...

  9. Docker技术学习

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1598249 貌似Doc ...

  10. Docker入门学习

    Python爬虫 最近断断续续的写了几篇Python的学习心得,由于有开发经验的同学来说上手还是比较容易,而且Python提供了强大的第三方库,做一个小的示例程序还是比较简单,这不我之前就是针对Pyt ...

随机推荐

  1. Ajax技术使用(一)

    Ajax技术使用 目录 AJAX介绍 XMLHttpRequest 请求和响应 onreadystatechange 事件 AJAX介绍 什么是 AJAX AJAX = 异步 JavaScript 和 ...

  2. 不一样的go语言-error

    前言   go语言的error处理方式,在目前流行的编程语言中属于刺头.似乎天生就是用来有别于他人标记.TIOBE排行榜全十除了C语言,无一例外是try catch的阵营.而排在go之前的语言除了C与 ...

  3. Django基础(三)

    知识预览 Ajax前戏:json Ajax简介 jquery实现的ajax JS实现的ajax 回到顶部 Ajax前戏:json 什么是json? 定义: JSON(JavaScript Object ...

  4. hihocoder#1513 : 小Hi的烦恼 bitset

    目录 题目链接 题解 代码 题目链接 hihocoder#1513 : 小Hi的烦恼 题解 cdq 套cdq 套cdq 套cdq就完了呀 对每一科开n个bitset 表示该科目前i个有谁 每次查询都& ...

  5. python基础一 ------如何统计一个列表元素的频度

    如何统计一个列表元素的频度 两个需求: 1,统计一个随机序列[1,2,3,4,5,6...]中的出现次数前三的元素及其次数 2,统计一片英文文章中出现次数前10 的单词 两种方法: 1,普通的for循 ...

  6. 【开源GPS追踪】 之 为何费力不讨好

    GPS追踪,在X宝上一搜一大堆,价格几十到几百层次不齐,为何还要自己开发? 1 对我来说,就是手头有这些硬件资源(GPRS GPS MCU)以及软件资源(VPS),算闲的蛋疼,其实不然,本人工作也很忙 ...

  7. 基于socket构造c/s 架构软件

    1.socket作用 socket层介于应用层和传输层之间,它起着连接应用层和传输层的功能,同时它能连接应用层和网络层. socket把复杂的tcp/ip协议隐藏在socket接口后面,对用户来说,一 ...

  8. BZOJ4432 : [Cerc2015]Greenhouse Growth

    对于高度相同的一段可以合并,用链表从左往右维护这些连续段,每段维护以下信息: $l,r$:表示区间的左右端点. $t,a$:表示在第$t$天结束时它的高度是$a$. $b$:当阳光在左边时它是否会长高 ...

  9. 考前停课集训 Day7 嘞

    Day7 正如一个大佬提醒的那样,棕名是会被嘲讽的 果然…… 在洛谷里…… 算了. 不必在意. 马上就要退役了. NOIP,开始的地方,也是结束的地方. 如果一群OIer比你小 还会嘲讽你, 你就该退 ...

  10. linux查看服务安装目录

    linux查看服务安装目录server dir 假如我们想查看 Redis 的安装目录 如果用命令 which redis 或者 whereis redis 都找不到安装目录, 可使用以下办法: ps ...