Docker 数据卷:在容器化应用程序中实现数据的可靠性和可扩展性 (docker是干什么的)
概述
Docker 数据卷是一种用于在 Docker 容器之间共享和持久化数据的机制。它们使开发人员能够将应用程序数据与容器本身分开,从而提高了数据的可靠性和应用程序的可扩展性。
数据卷的优点
- 数据持久性:数据卷中的数据在容器销毁后仍会保留,确保了数据的持久性。
- 数据共享:数据卷可以在多个容器之间共享,使应用程序能够访问相同的数据集。
- 可扩展性:数据卷可以根据需要动态扩展,以适应不断增长的数据存储需求。
- 隔离:数据卷将应用程序数据与容器本身隔离,从而提高了容器的安全性。
创建数据卷
创建数据卷可以使用 Docker CLI 或 Docker API。以下示例使用 CLI 创建一个名为
my-volume
的数据卷:
docker volume create my-volume
将数据卷挂载到容器
要将数据卷挂载
docker是干什么的
docker是开源的应用容器引擎,能更好地在容器内运行任何应用。
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker是 PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。Docker自2013年以来非常火热,无论是从github上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持,就连Google的 Compute Engine也支持docker在其之上运行。
Docker的局限
1、Docker是基于Linux64bit的,无法在32bit的linux/Windows/unix环境下使用。
2、LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的。
3、隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库。
4、网络管理相对简单,主要是基于namespace隔离。
5、cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)。
6、Docker对disk的管理比较有限。
7、container随着用户进程的停止而销毁,container中的log等用户数据不便收集。
Docker是什么?
Docker是世界领先的软件容器平台。 Docker使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup,namespace,以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。 由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器,但docker本身并不是容器,它是创建容器的工具,是应用容器引擎。 Docke最初实现是基于LXC。 LXC为Linux Container的简写。 可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。 相当于C++中的NameSpace。 容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。 docker并不是LXC替代品,docker底层使用了LXC来实现,LXC将linux进程沙盒化,使得进程之间相互隔离,并且能够课哦内阁制各进程的资源分配。 在LXC的基础之上,docker提供了一系列更强大的功能。 Docker能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员以便他们专注在真正重要的事情上:构建杰出的软件。 用户可以方便地创建和使用容器,把自己的应用放入容器。 容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。 docker的三个概念:镜像(Image):类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。 任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。 例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。 容器(Container):类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境(包括root权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。 Docker引擎利用容器来运行、隔离各个应用。 容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。 注意:镜像本身是只读的,容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身不变。 仓库(Repository):类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。 注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用tag进行区分,比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。 docker的用途:官方给的是bulid ship run,就是编译、装载、运行。 就是实现了应用的封装、部署、运行的生命周期管理只要在glibc的环境下,都可以运行。 谐云自主研发的容器云平台,是基于Docker和Kubernetes技术构建的一套完整IT标准化和自动化框架,以“面向终态、优化IT资源”为目标的新一代PaaS平台,能够提高企业的IT管理能力,在降低运营成本和风险的同时,获得更高的运维效率,保障业务稳定运行和高效迭代。
微服务基础服务之docker篇
什么是docker
Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)。
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
传统虚拟化
为什么要用docker
对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。
而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。
特性容器虚拟机 启动秒级分钟级 硬盘使用一般为MB一般为GB 性能接近原生弱于 系统支持量单机支持上千个容器一般几十个
基本概念
我们都知道,操作系统分为内核和用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系统的 root 文件系统。
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
前面讲过镜像使用的是分层存储,容器也是如此。每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层。
按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。
数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器删除或者重新运行之后,数据却不会丢失。
镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。
一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。
通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
Centos安装docker18
常用的docker命令
常用的docker镜像
若对本页面资源感兴趣,请点击下方或右方图片,注册登录后
搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源
如有其他疑问,请咨询右下角【在线客服】,谢谢支持!
相关文章
- 打字高手养成记:金山打字通 2021 电脑版助你迈向快打巅峰 (打字高手1)
- 从入门到精通:金山打字通 2021 电脑版满足不同水平打字需求 (从入门到精通的开荒生活)
- 告别频繁更正错误:金山打字通 2021 电脑版助力高效办公 (告别频繁更正的成语)
- 精准度与速度兼备:金山打字通 2021 电脑版打造完美输入体验 (精准度与速度的关系)
- 解锁专业级输入技能:金山打字通 2021 电脑版重磅来袭 (专业解锁工具)
- 告别慢打!金山打字通 2021 助你提升打字速度
- 金山打字通 2021 电脑版:成就打字大师之梦 (金山打字通2003)
- 金山打字通 2021:开启高效输入新时代 (金山打字通2006)
- 信息无缝流动:中英文互译翻译器连接不同的文化和观点 (信息无缝流动什么意思)
- 学术和研究的宝贵工具:中英文互译翻译器促进知识交换 (学术和研究的区别)
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~