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

Docker核心概念

2019-04-01 13:18 148 查看

        Docker是基于Go语言实现的云开源项目,诞生于2013年,docker项目目前以加入Linux基金会,遵循Apache2.0协议,全部开源代码均在http://github.com/docker/docker上进行维护。docker的主要目标是:“Build, Ship and Run Any App, Anywhere”, 即通过对应用组件的封装、分发、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”。

Docker引擎的基础是基于Linux容器(LXC)技术,即容器有效的将由单个操作系统管理的资源划分到孤立的组中,以便更好地在孤立的组之间平衡有冲突的资源使用需求。

docker可以高效的创建应用。

Docker在运维中的优势:

1.更快的交付和部署。使用docker,开发人员可以使用镜像来快速构建一套标准的开发环境,开发完成之后,测试和运维人员可以直接使用相同的环境来部署代码,Docker可以快速创建和删除容器,实现快速迭代,大量节约开发、测试、部署的时间,并且,各个步骤都有明确的配置和操作,整个过程全程可见,使团队更容易理解应用的创建和工作过程。

2.更高效的资源利用。Docker容器的运行不需要额外的虚拟化管理程序(VMM)支持,它是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。

3.更轻松的迁移和扩展。Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。这种兼容性让用户可以在不同的平台之间轻松的迁移应用。

4.更简单的更新管理。使用dockerfile, 只需要小小的配置修改,就可以替代以往大量的更新工作。并且所有修改都以增量的方式进行分发和更新,从而实现自动化并且高效的容器管理。

 

Docker核心概念

1、镜像:类似于虚拟机镜像,可以理解为面向docker引擎的只读模板,包含文件系统。

2、容器:

docker容器类似于一个轻量级的沙箱,利用容器可以实现运行和隔离应用。

容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是互相隔离、互不可见的。

读者可以把容器看做一个简易版的Linux系统环境(这包括root用户权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序打包而成的应用盒子。

镜像自身是只读的。容器从镜像启动的时候,docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。

3、仓库:

类似于代码仓库,是集中存放镜像文件的场所。其管理理念和git十分相似。

 

Docker数据管理

数据卷:可以供容器使用的特殊目录,绕过文件件系统,具有以下特性:

数据卷可以在容器之间共享和重用;

对数据卷的修改会立马生效;

对数据卷更新,不会影响镜像;

卷会一直存在,直到没有容器使用。

在容器内创建一个数据卷:(-v 挂载一个本地主机文件目录作为数据卷)

docker run -d -p --name web -v /src/webapp:/opt/webapp training/webapp python app.py

数据卷容器:

docker run -it -v /dbdata --name dbdata ubuntu

docker run -it --volumes-from dbdata --name db1 ubuntu

docker run -it --volumes-from dbdata --name db2 ubuntu

 

利用数据卷容器迁移数据:

数据备份:

docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata

数据恢复:

docker run -v /dbdata --name dbdata2 ubuntu /bin/bash

docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: