您的位置:首页 > 运维架构 > Docker

Docker入门知识总结-学习笔记1

2018-08-12 15:54 721 查看
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的安全性。在已知的大规模应用中,目前尚未出现值得担忧的安全隐患。
Doc
b60
ker体系结构:

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 image
111c
s的地方。而另外有一个概念叫做注册服务器(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  docker 张晨