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

[经验分享] Docker入门知识总结

[复制链接]

尚未签到

发表于 2019-2-21 08:32:46 | 显示全部楼层 |阅读模式
  Docker容器技术是基于Go语言实现的云开源项目,诞生于2013年,是一种高效、敏捷、和轻量级的容器解决方案,发布于2013年。Docker基于Linux平台上的多项开源技术,其中最重要的就是Linux容器(Linux Containers,LXC)技术。

  Docker的优点:
  更快速的交付和部署。使用Docker,开发人员可以使用镜像来快速构建一套标准的开发环境;开发完成之后,测试和运维人员可以直接使用完全相同环境来部署代码。只要开发测试过的代码,就可以确保在生产环境无缝运行。Docker可以快速创建和删除容器,实现快速迭代,大量节约开发、测试、部署的时间。并且,整个过程全程可见,使团队更容易理解应用的创建和工作过程。
  更高效的资源利用。Docker容器的运行不需要额外的虚拟化管理程序(VirtualMachine Manager,VMM,以及Hypervisor)支持,它是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。跟传统虚拟机方式相比,要提高一到两个数量级。
  更轻松的迁移和扩展。Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,同时支持主流的操作系统发行版本。这种兼容性让用户可以在不同平台之间轻松地迁移应用。
  更简单的更新管理。使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。并且所有修改都以增量的方式被分发和更新,从而实现自动化并且高效的容器管理。
  Docker与虚拟机的比较:
  Docker容器很快,启动和停止可以在秒级实现,而传统的虚拟机方式需要数分钟。
  Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器(在IBM服务器上已经实现了同时运行10K量级的容器实例)。
  Docker通过类似Git设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新。
  Docker通过Dockerfile支持灵活的自动化创建和部署机制,提高工作效率,使流程标准化。
  Docker容器除了运行其中应用外,基本不消耗额外的系统资源,保证应用性能的同时,尽量减小系统开销。传统虚拟机方式运行N个不同的应用就要起N个虚拟机(每个虚拟机需要单独分配独占的内存、磁盘等资源),而Docker只需要启动N个隔离的“很薄的”容器,并将应用放进容器内即可。应用获得的是接近原生的运行性能。
  在隔离性方面,传统的虚拟机方式提供的是相对封闭的隔离。但这并不意味着Docker就不安全,Docker利用Linux系统上的多种防护技术实现了严格的隔离可靠性,且可以整合众多安全工具。从1.3.0版本开始,Docker重点改善了容器的安全控制和镜像的安全机制,极大提高了使用Docker的安全性。在已知的大规模应用中,目前尚未出现值得担忧的安全隐患。
  Docker体系结构:

  Docker使用C/S架构,docker daemon作为server端接受client端的请求,然后进行处理。server端和client端也可以运行在同一个机器上,使用socket或者RESTful API进行通信。server端也就是docker daemon运行在主机的后台,client以系统命令的形式存在,用户用docker命令来跟docker daemon 交互。用户通过输入docker命令可以管理docker的镜像、容器、网络和数据卷。

  Docker三大核心概念:

  1、镜像(Docker images)
  Docker镜像是Docker容器运行时的只读模板,镜像可以用来创建Docker容器。每一个镜像由一系列的层 (layers) 组成。Docker使用UnionFS(联合文件系统)来将这些层联合到单独
的镜像中。UnionFS允许独立文件系统中的文件和文件夹(称之为分支)被透明覆盖,形成一个单独连贯的文件系统。正因为有了这些层的存在,Docker是如此的轻量。当你改变了一个Docker镜像,比如升级到某个程序到新的版本,一个新的层会被创建。因此,不用替换整个原先的镜像或者重新建立(在使用虚拟机的时候你可能会这么做),只是一个新的层被添加或升级了。现在你不用重新发布整个镜像,只需要升级,层使得分发Docker 镜像变得简单和快速。
  例如:在centos镜像中安装nginx,就成了“nginx镜像”,其实就是在底层的一个centos操作系统镜像上加一个nginx层,就完成了一个nginx镜像的构建。此时我们一般centos操作系统镜像称为nginx镜像层的父镜像。
  2、容器(Docker containers)
  Docker利用容器来运行应用,一个Docker容器包含了所有的某个应用运行所需要的环境。每一个Docker容器都是从Docker镜像创建的,是通过镜像创建的运行实例。Docker容器可以运行、开始、停止、移动和删除。每一个Docker容器都是独立和安全的应用平台,彼此
相互隔离、互不可见。
3、仓库(Docker repository)
Docker仓库其实就是存放Docker images的地方。而另外有一个概念叫做注册服务器(Registry),一个注册服务器上可以有多个仓库。一个仓库一般存放着一类镜像,这些镜像通过自身不同的Tag(标签)进行区分。

Docker的两个核心底层技术:
1、名称空间(Namespace)
上面说到Docker的隔离性,其实名称空间就是在Docker中用来隔离容器的主要技术。
1) pid namespace
用来隔离不同用户的进程

2)net namespace
隔离容器的网路

3)IPC namespace
因为容器中进程交互还是采用linux常见的进程间交互方法 (interprocess communication
- IPC),包括常见的信号量、消息队列和共享内存
4)mnt namespace
类似chroot,将进程放在特定目录执行。允许不同namespace的
进程看到的文件结构不同
5)uts namespace
允许每个container拥有独立的hostname和
domain name, 使其在网络上可以被视作一个独立的节点而非Host上的一个进程。
6)user namespace
  使得每个container可以有不同的user和group id
  2、cgroups(Control groups)
  cgoups其实是将所有进程放到一个组里面统一管理的机制。主要提供了资源限制、优先级分配、资源统计、进程控制的作用。
  
  Docker的安装:

  环境:centos7的维护版、centos-extras仓库需要激活、使用overlay2 存储驱动
1、yum remove docker docker­client docker­client­latest docker­common docker­latest docker­latest­logrotate docker­logrotate docker­selinux docker­engine­selinux docker­engine
卸载旧版本的Docker
2、yum install ­y yum­utils device­mapper­persistent­data lvm2
安装使用yum-config-manager命令
3、yum-config-manager --add-repo
使用官方源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
使用国内源(建议国内源,官网的可能会慢)
4、yum install docker-ce
安装
5、systemctl start docker
docker run helloword
测试  Docker官方文档:docs.docker.com
  





运维网声明 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-675103-1-1.html 上篇帖子: docker基础笔记 下篇帖子: Docker的安装与镜像、容器、仓库的管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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