设为首页 收藏本站
查看: 1345|回复: 0

[经验分享] Anliven

  [复制链接]

尚未签到

发表于 2017-6-22 07:06:49 | 显示全部楼层 |阅读模式
Docker
  Docker - 官网
  
Docker - Hub
  
GitHub - Docker
  dockerinfo
  
Docker中文社区
  Docker入门教程
  
Docker从入门到实践
DSC0000.png


虚拟化技术
  硬件级虚拟化(hardware-level-virtualization)
  
基于Hyper-V运行在硬件之上的虚拟化技术,模拟的是一个完整的操作系统。
  
VMWare, Xen, VirtualBox,亚马逊AWS和阿里云都是用的这种技术。
  操作系统级虚拟化(os-level-virtualization)
  
运行在操作系统之上的,模拟的是运行在操作系统上的多个不同进程,并将其封装在一个密闭的容器里面,也称为容器化技术。
  
Docker是容器虚拟化中目前最流行的一种实现。

Docker 介绍
  什么是Docker?
  
Docker其实是容器化技术的其中一种实现,由于省去了操作系统,整个层级更简化。
  Docker主要解决什么问题?
  
Docker通过将运行环境和应用程序打包到一起,来解决部署环境依赖问题,真正做到跨平台的分发和使用。
  镜像(Image)
  
Docker镜像是一个容器的文件系统,提供容器运行时所需的程序、库、资源、配置等文件和运行时需要的一些配置参数( 如匿名卷、环境变量、用户等)。
  
Docker镜像是只读的,不包含任何动态数据,其内容在构建之后也不会被改变。
  
Docker利用UnionFS技术,设计为分层存储的架构,Docker镜像由多层文件系统联合组成。
  
镜像构建时,会一层层构建,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。
  
前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。
  容器(Container)
  
Linux的CGroup技术用来限定一个进程的资源使用,Namespace技术用来划分不同的命名空间。
  
容器的实质是进程,是基于CGroup技术和Namespace技术运行在操作系统上的一个拥有受限资源和单独命名空间的进程。
  
容器拥有自己的文件系统、网络配置、进程空间,甚至用户ID空间。
  
每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层。当容器运行时,会在镜像之上再加上一层可读可写层。
  容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。
  
但数据卷(Volume)的生存周期独立于容器,容器消亡,数据不会丢失,所以文件写入操作应该使用数据卷( Volume)。
  仓库(Repository)
  
Docker Registry是提供集中的存储、分发镜像的服务。
  
一个 Docker Registry 中可以包含多个仓库( Repository) ;每个仓库可以包含多个标签( Tag) ;每个标签对应一个镜像。
  
通过 <仓库名>:<标签> 格式指定具体镜像。如果不给出标签,将以 latest 作为默认标签。
  Docker Registry 公开服务是开放给用户使用、允许用户管理镜像的 Registry 服务。
  
最常使用的 Registry 公开服务是官方的 Docker Hub,这也是默认的 Registry。
  
国内也有类似Docker Hub 的公开服务。例如:网易云镜像服务、DaoCloud镜像市场、阿里云镜像库等。
  
用户还可以在本地搭建私有 Docker Registry。
  Docker加速器
  
Docker加速器是指国内的一些云服务商提供了针对 Docker Hub 的镜像服务( Registry Mirror)。
  
使用加速器会直接从国仓库内的地址下载 Docker Hub 的镜像。
  容器的UUID

  
UUID -- 通用唯一标识符(Universally Unique>  
容器有三种方式来进行标识:长UUID、短UUID、Name。
  
UUID 是 Docker daemon 产生的,在一台主机上是唯一的,在创建容器的时候可以通过--name 来指定容器的名字,如果不指定会自动分配一个字符串名称。
  
通过docker ps、docker inspect等命令可以查看到容器的标识信息。

Docker的优势


  • 更高效的系统资源利用。Docker容器不需要进行硬件虚拟以及运行完整操作系统等额外开销
  • 更快速的启动时间。Docker容器应用直接运行于宿主内核,无需启动完整的操作系统。
  • 一致的运行环境。Docker镜像提供除内核外完整的运行时环境。
  • 更轻松的迁移。执行环境的一致性,迁移应用更加容易。
  • 更便利的持续交付和部署。一次创建或配置,任意环境正常运行。
  • 更轻松的维护和扩展。Docker的分层存储以及镜像技术,复用、维护和扩展更简单。
容器vs虚拟机

特性
容器
虚拟机
启动
秒级
分钟级
硬盘使用
一般为MB
一般为GB
性能
接近原生
弱于
系统支持量
单机支持上千个容器
一般几十个
DSC0001.jpg DSC0002.jpg


Docker-engine的C/S架构
  Docker-engine在主机上是C/S架构,其中C指的是docker client,S指的是docker daemon,但是这二者使用的是同一个程序。
  
可以使用docker version来查看client和daemon的信息。
  Docker在运行时分为Docker引擎(服务端守护进程docker daemon)和客户端工具docker client。
  
Docker引擎提供了一组REST API(Docker Remote API),客户端工具通过这组API与Docker引擎交互,从而完成各种功能。
  
因此,虽然表面上好像是在本机执行各种docker功能,但实际上,一切都是使用的远程调用形式在服务端(Docker引擎)完成。
  
这种C/S设计,让操作远程服务器的Docker引擎变得轻而易举。
DSC0003.png

[iyunv@CentOS-7 ~]# docker version  
Client:
  Version:         1.10.3
  API version:     1.22
  Package version: docker-common-1.10.3-59.el7.centos.x86_64
  Go version:      go1.6.3
  Git commit:      3999ccb-unsupported
  Built:           Thu Dec 15 17:24:43 2016
  OS/Arch:         linux/amd64
  

  
Server:
  Version:         1.10.3
  API version:     1.22
  Package version: docker-common-1.10.3-59.el7.centos.x86_64
  Go version:      go1.6.3
  Git commit:      3999ccb-unsupported
  Built:           Thu Dec 15 17:24:43 2016
  OS/Arch:         linux/amd64
  
[iyunv@CentOS-7 ~]#

Docker的简单使用
  使用docker的时候,首先需要拉取镜像,然后运行这个镜像,通过镜像生成容器。
  
同时,容器也可以转化为镜像,通过docker commit将容器的可读可写层转化为只读层。
  
注意:容器运行过程中,并不会修改镜像的内容,如果需要对容器做持久化,就必须通过commit来进行,否则容器退出后数据就会丢失。
# 获取镜像  
[iyunv@CentOS-7 ~]# docker pull ubuntu:16.04
  

  
# 运行容器
  
[iyunv@CentOS-7 ~]# docker run -it --rm ubuntu:16.04 bash
  
root@7f8001fb78da:/# cat /etc/os-release
  
NAME="Ubuntu"
  
VERSION="16.04.2 LTS (Xenial Xerus)"
  
ID=ubuntu
  
ID_LIKE=debian
  
PRETTY_NAME="Ubuntu 16.04.2 LTS"
  
VERSION_ID="16.04"
  
HOME_URL="http://www.ubuntu.com/"
  
SUPPORT_URL="http://help.ubuntu.com/"
  
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
  
VERSION_CODENAME=xenial
  
UBUNTU_CODENAME=xenial
  
root@7f8001fb78da:/#
  
root@7f8001fb78da:/# exit
  
exit
  
[iyunv@CentOS-7 ~]#
  

  
# -i :交互式操作
  
# -t :分配pseudo-TTY终端
  
# --rm :容器退出后,删除容器
  
# ubuntu:14.04 :使用ubuntu:14.04镜像为基础启动容器
  
# bash :交互式bash Shell

参考信息
  深入浅出Docker
  
Docker源码分析

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-386616-1-1.html 上篇帖子: SaltStack 入门到精通第三篇:Salt-Minion配置文件详解 下篇帖子: 认识Docker
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表