-
docker是什么
2018-02-16 02:01:02docker的第一篇博客应该是一个通俗易懂的扫盲贴。...本篇博文为大家介绍为什么需要docker这样一个东西,以及docker是什么。通过IT发展遇到了什么、docker又是如何去解决的,从而来阐述docker的作用。docker的第一篇博客应该是一个通俗易懂的扫盲贴。
本篇博文为大家介绍为什么需要docker这样一个东西,以及docker是什么。通过IT发展遇到了什么、docker又是如何去解决的,从而来阐述docker的作用。
关于docker是什么,官方的解释是:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
看上去是不是有点懵逼,下面用通俗的语言去阐述docker是什么,有什么用。
场景模拟:物品运输
举这么一个简单的例子:比如你有一堆东西要从A运到B(在没有集装箱的情况下),包括衣服、书、水果、颜料、化学物品;你需要考虑哪些问题?
1、由于他们的形状各不相同,在没有集装箱的情况下,你可能要考虑他们的摆放顺序,如多汁水果不要被重物压坏。--------------类比:避免服务对资源的过度抢占。
2、运输批次的问题,因为某些货物可能不宜放在一起,如水果和化学物品最好能装不同的车---------------------类比:资源的隔离,防止冲突
3、运输工具转变后可能要遇到重新摆列的问题,因为货车、飞机、轮船的仓储结构是不尽相同的。--------------------类比:代码运行环境的依赖,代码的移植
对应地,在软件开发环境中,开发、测试、运维人员不得不考虑以下因素,docker也恰恰解决了这些问题
1、 资源数额的抢占
如何避免服务/程序/进程占用过量的资源,影响物理机上的其他的程序。docker利用cgroup机制来实现资源限制、优先级分配、资源统计、任务控制等功能;通俗地讲就是我们可以利用docker来控制服务所能够调动的资源,docker好比一个箱子,我们把服务装到箱子里,你可以去控制这个箱子有多大,来决定服务能用多少资源;
2、 资源的隔离,避免保证进程/服务之间资源冲突
同一台宿主机上可能会运行多个程序,这些程序可能有不同的依赖环境,要让他们在宿主机中共存可能会很麻烦;比如IIS和Apache访问端口可能会冲突,此时你可能就需要去隔离.net和PHP所开发的网站;你可以在物理机上创建虚拟机来实现隔离应用的需求,但是docker同样能胜任,而且比虚拟机所需要的资源要少得多。
3、 如何保证开发、测试、运维环境的一致性、代码的可移植性
可能开发环境用的是ubuntu、运维环境是centos、测试环境是windows(当然这种极端情况可能不多);但即使操作系统版本相同,想要保持共同的代码运行环境也是极难的。docker好比一个集装箱,我们可以把代码运行时所需要的库、依赖包等环境一起打包封装进docker,这样开发就可以把这个容器直接分发给测试、运维,他们只要在机器上运行docker就能获得与开发环境等价的运行环境。
除了以上三点,docker还有一些其他优势
1、 资源的利用率与启停速度更胜虚拟机
虚拟机需要在硬件之上单独运行一个虚拟化层,然后在虚拟机上单独建立操作系统;而docker未必有完整的操作系统,他是与宿主机共享内核的,因此在资源调度效率方面要优于虚拟机。但是对应的,隔离性会比虚拟机要差一些。
2、 开发、运维的逻辑职责更加清晰
容器技术使得开发人员只需要关心容器中运行的应用环境,运维人员只需要关注如何去管理容器,职责更加分明;docker使得开发环境与生产运行环境保持了一致性,减少“开发时一切正常,一定是运维的问题”的现象。
-
DOCKER是什么
2017-04-10 12:30:09Docker其实类似于早期的LXC,是由namespace和CGroup两个技术叠加出来的,但又不完全是。Docker的最大价值其实是让DevOps开发和运维的一体化能够轻松落地。早前DevOps很难落地,因为去部署、发布、运维和管理那些应用...Docker其实类似于早期的LXC,是由namespace和CGroup两个技术叠加出来的,但又不完全是。Docker的最大价值其实是让DevOps开发和运维的一体化能够轻松落地。早前DevOps很难落地,因为去部署、发布、运维和管理那些应用的过程很麻烦,所以在云上面衍生了大量的编排类的服务出来。
Docker通过镜像分发,可以快速部署;这种把配置和环境解耦的方式,让快速部署变成可能。这就意味着Docker的弹性非常好,而且速度很快。他可以快速扩容部署一百台,然后再迅速缩容到一台,随后再快速部署一百台;这是Docker从诞生开始的优点,所以运维的人很喜欢他。
Docker的出现改变了很多过去的开发形态。Docker是一种非常轻量级的开发和部署环境的形态,它提高了开发效率。此外,因为Docker会适配很多东西,所以底层虚拟化变得更简单。我们认为Docker在未来3—5年里面,变成一个非常主流的开源技术和商业生态,这个时候很多开发者会在上面做牵引,搬到Docker上面去。这种模式会变成一种方向,而这个方向的代表就是Docker。
Docker 是一个工具,它致力于为任何应用程序创建分发版本而简化封装流程,将其部署到各种规模的环境中,并将敏捷软件组织的工作流程和响应流水化。
相比很多人的解释,我相信说Docker是一个轻量级的虚拟机更容易理解。Docker是一个类似于虚拟机的容器,可以使开发者在同一服务器上独立地运行自己的程序,此外,不局限于某特定操作系统的特性,为开发者的部署带来了极大的便利。
Docker 最初的2小时(Docker从入门到入门) http://blog.csdn.net/21cnbao/article/details/56275456
最近Docker淫威太盛,看我怎么扁它!
https://mp.weixin.qq.com/s?src=3×tamp=1491798149&ver=1&signature=XiVTpaGjEY16tF*nP8ajyeir1TKSYVDcBEeBEj*7wC-OlkLEgxj049ljKrsgAMlBqnJkhKpyjMsvAMQPDWLB2HCYx7Ic8qXM4eOCF3FBAg*GVMkKU7mRdNanxxOk3hIXuGm1x8JCZjrQCQy*udvJEQ== -
Docker是什么
2017-03-12 20:29:06如果说个人主机时代大家比拼的关键是CPU主频的高低和内存的大小,那么在云计算时代,虚拟化技术无疑是整座信息技术大厦最核心的一块基石。 伴随着信息技术产业的发展,虚拟化技术已经应用到各种关键场景中。从最早...如果说个人主机时代大家比拼的关键是CPU主频的高低和内存的大小,那么在云计算时代,虚拟化技术无疑是整座信息技术大厦最核心的一块基石。
伴随着信息技术产业的发展,虚拟化技术已经应用到各种关键场景中。从最早上世纪6o年代IBM推出的大型主机虚拟化到后来×86平台上的虚拟化,虚拟化技术自身也在不断丰富和创新。
虚拟化既可以通过硬件模拟来实现,也可以通过操作系统来实现。而近些年出现的容器虚拟化方案,更是充分利用了操作系统本身已有的机制和特性,可以实现轻量级的虚拟化,至有人把它称为新一代的虚拟化技术。Docker毫无疑问就是其中的佼佼者。
那么,什么是Docker?它会带来什么好处?它跟现有虚拟化技术又有何关系呢?
本章在介绍Docker项目的起源和发展之后,会剖析Docker和Linux容器技术的密切联系,以及在开发和运维中使用Docker的突出优势。最后,还将阐述Docker在整个虚拟化领域中的定位。
1.1什么是Docker
Docker开源项目Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotc1oud公司。Docker自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐渐形成了围绕Docker的生态体系。dotcloud公司后来也改名为Docker Inc,专注于Docker相关技术和产品
-
Docker是什么?开发者可以使用Docker做什么?
2020-11-27 14:32:16什么是Docker,Docker是什么? 从Docker Logo可以这么看:鲨鱼/货轮是操作系统,集装箱就是那些需要一个个部署的应用。 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的...一.什么是Docker,Docker是什么?
从Docker Logo可以这么看:鲨鱼/货轮是操作系统,集装箱就是那些需要一个个部署的应用。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
二.开发者可以使用Docker做什么?
【编者的话】有些开发者可能还是不明白 Docker 对自己到底有多大的用处,因此翻译 Docker 个人用例 这篇文章中来介绍 Docker 在普通开发者开发过程中的用例。
Docker 如今赢得了许多关注,很多人觉得盛名之下其实难副,因为他们仍然搞不清 Docker 和普通开发者到底有什么关系。许多开发者觉得 Docker 离自己很远,Docker 是生产环境中的工具,和自己无关。我也是花了很长时间才想清楚作为普通开发人员如何在自己的开发中使用 Docker。坦率地说,我仍处在学习的过程中。
这篇文章提供了一个 Docker 用例列表,我希望它能更好地帮助你理解 Docker 并引发你的思考。本文只是描述 Docker 在普通开发者日常的应用,并不提供完整的解决方案。
在介绍用例之前,我希望你能先记住这句话:“Docker 是一个便携的应用容器”。你可以不知道 Docker 所说的的“便携式容器”到底是什么意思,但是你必须清楚 Docker 在日常中能带来非常大的效率提升。
当你需要在容器内运行自己的应用(当然可以是任何应用),Docker 都提供了一个基础系统镜像作为运行应用时的基础系统。也就是说,只要是 Linux 系统上的应用都可以运行在 Docker 中。
可以在 Docker 里面运行数据库吗?当然可以。
可以在 Docker 里面运行 Node.js 网站服务器吗?当然可以。
可以在 Docker 里面运行 API 服务器吗?当然可以。Docker 并不在乎你的应用程序是什么、做什么,Docker 提供了一组应用打包、传输和部署的方法,以便你能更好地在容器内运行任何应用。
下面的例子我自己经常使用,当然你有更好的案例也可以分享给我。
尝试新软件对开发者而言,每天会催生出的各式各样的新技术都需要尝试,然而开发者却不太可能为他们一一搭建好环境并进行测试。时间非常宝贵,正是得益于 Docker,让我们有可能在一条或者几条命令内就搭建完环境。Docker 有一个傻瓜化的获取软件的方法,Docker 后台会自动获得环境镜像并且运行环境。
并不仅仅是新技术环境搭建用得到 Docker。如果你想快速在你的笔记本上运行一个 MySQL 数据库,或者一个 Redis 消息队列,那么使用 Docker 便可以非常容易地做到。例如 Docker 只需要一条命令便可以运行 MySQL 数据库:docker run -d -p 3306:3306 tutum/mysql。
译者注:虽然使用命令也能非常快地安装 MySQL 数据库,但是当用到最新的技术或者非常复杂的技术时,使用 Docker 便会是个非常好的选择,例如 Gitlab,普通用户大概需要一天的时间去搭建 Gitlab 平台,而 Docker 则只需要一条命令。
进行演示现在我经常需要在周末用自己开发的成果对客户活着别人做一两个演示。搭建演示环境的过程非常麻烦。现在我发现 Docker 已经成为我演示这些工具的最合理的方式。同时,对于客户来说,我可以直接将 Docker 镜像提供给他们,而不必去做任何环境配置的工作,工作的效果也会和在他们演示中所看到的一模一样,同时不必担心他们的环境配置会导致我们的产品无法运行。
避免“我机器上可以运行”无论是上一篇介绍的企业部署 Docker 还是本文的个人 Docker 用例,都提到了这个情况。因为环境配置不同,很多人在开发中也会遇到这个情况,甚至开发的软件到了测试人员的机器上便不能运行。但这都不是重点。重点是,如果我们有一个可靠的、可分发的标准开发环境,那么我们的开发将不会像现在这么痛苦。Docker 便可以解决这个问题。Docker 镜像并不会因为环境的变化而不能运行,也不会在不同的电脑上有不同的运行结果。可以给测试人员提交含有应用的 Docker 镜像,这样便不再会发生“在我机器上是可以运行的”这种事情,很大程度上减轻了开发人员测试人员互相检查机器环境设置带来的时间成本。
另一个 Docker 可以发挥用处的地方是培训班。除了 Docker 容器的隔离性之外,更能体会到 Docker 优势的地方在于环境搭建。培训班的新手每个人都要在环境搭建上花费很多时间,但是如果在这里应用到 Docker 的话,那么我们只需要把标准的运行环境镜像分发下去,然后就可以开始上课了。使用 Docker 和使用虚拟机一样简单,但是 Docker 要更方便、更轻量级。同时,我们也可以告诉学员:“在培训的同时,我们还将学到当下最流行的技术——Docker”,这种双赢的结局,何乐而不为呢。
学习 Linux 脚本当然这个原因看起来可能很奇怪,但是对不不熟悉 Linux 操作系统和 Shell 脚本的人来说,确实是一个好机会。即便本文并不是在讲 Linux,Linux 的重要度仍然不言而喻。如果你用的是 Windows,那么我给你一个建议:从云主机提供商那儿租用一台云主机:我推荐使用 CoreOS 系统的云主机。虽然这样并不会让你成为专业的 Linux 运维,但是可以让你快速地学到 Linux 基础知识,爱上命令行操作,并且慢慢开始熟悉和欣赏 Linux。
更好地利用资源虚拟机的粒度是“虚拟出的机器”,而 Docker 的粒度则是“被限制的应用”,相比较而言 Docker 的内存占用更少,更加轻量级。
对我来说这是 Docker 的一个优势:因为我经常在自己电脑中运行多个 Docker 应用,使用 Docker 比使用虚拟机更加简单,方便,粒度更细,也能持续地跟踪容器状态。
为微服务定制如果你一直在关注科技新闻的话,那么你应该听说过“微服务(Microservices)”的概念。Docker 可以很好地和微服务结合起来。从概念上来说,一个微服务便是一个提供一整套应用程序的部分功能,Docker 便可以在开发、测试和部署过程中一直充当微服务的容器。甚至生产环境也可以在 Docker 中部署微服务。
在云服务提供商之间移植大多数的云主机提供商已经全面支持 Docker。对于开发人员来说,这表示你可以很方便地切换云服务提供商,当然也可以很方便地将你本地的开发环境移动到云主机上,不需要本地上配置一次运行环境、在云主机上还配置一次运行环境。全面部署 Docker (Docker here and Docker there) 作为标准运行环境可以极大地减轻应用上线时的工作量和产生 BUG。
API 端API 是应用之间的粘合剂,一个合格开发者肯定使用过别人提供的 REST API,或者自己开发过 REST API。需要指出的是,无论是客户端还是 API 提供端,在开发之前都需要先定义一组公共的 API 接口,写成文档,然后才能进行编码。如果服务端和客户端是共同开发的话,那么服务端通常会先实现能返回固定字符串的 API 接口,在以后的开发中再慢慢去实现 API 的功能。
虽然有人会认为在这里 Docker 被滥用了,完全可以用 sample.json 这种文件去实现虚拟 API,但是下面有个实例可以更好地解决前后端分离开发时的 API 问题。
为了更好地解释我的意思,给大家提供一个实例:JSON Server,一个用于提供 JSON 数据的 REST API。使用过这个容器的人就会知道,既然有这么好用的 Docker JSON Server,我们没有理由不用 Docker。
译者注:
运行示例的 JSON Server,同时使用示例中提供的 JSON 文件,只需执行一条命令便可以创建一个服务端的 API 应用。
使用 curl http://127.0.0.1:80/posts 即可获取示例文件中的 posts 段,这样在后端没有开发完 API 的时候,前端一样可以进行协同开发。
技术的创新这点应该算不上是用例,但是我还是来写一下。Docker 正在快速发展,工具也在不断更新,没有人能预见到未来 Docker 会是什么样子的。你在复杂的系统中 Docker 使用的越多,越是可能会发现技术上的空白和未来技术发展的方向。现在还处在 Docker 的发展期,任何你使用 Docker 创建的工具都有可能成为社区关注的热点。这是 Docker 的机会,也是成就你自己的机会。
你的用例最后一条便不再是我的用例了,而是 Docker 在你手中能发挥多大的作用。我也很希望看到你能提供更多使用 Docker 的方式,欢迎留言。
其他还有两个技巧可以分享给你们。在学习 Docker 的过程中因为有了这两个的帮助,我才得意不断地提升自己。
一:Docker Hub Registry。这是 Docker 的官方镜像仓库,除了托管着 Docker 官方的镜像外,和 Github 一样,你可以在上面上传自己的镜像,也可以在上面搜寻其他有用的镜像,极大地节省自己的时间。例如 Oracle-XE-11g 镜像,所有的一切都是现成的,完全不需要自己去下载 Oracle XE 11g 安装。这样为你和团队节约了大量的时间成本。
如果你不太确定的话,可以去 Docker Hub 上搜有一下有没有自己用得到的镜像。大部分情况下你所需要的镜像在 Docker Hub 上都已经有人构建了。
二:多参考 IaaS 供应商的新闻,虽然我们不能像在他们会议室里那样完全了解他们的公司动态,但是仍然可以从新闻中可以了解到 Docker 最新的发展方向和技术趋势。可以肯定的是,容器化技术是未来的热点,我们不仅可以在本机运行 Docker,不仅仅在一家云服务提供商的主机上运行 Docker,未来所有的云服务提供商都会支持 Docker。
Docker 前景很明确,采用 Docker 只会让开发变得更方便。
原文链接:Docker Use Cases(翻译:大舒)
=============================================
译者介绍
大舒,SegmentFault 员工。
本文由 SegmentFault 社区组织翻译,原译文地址。 -
Docker是什么?可以用Docker做什么?
2020-06-06 18:33:50Docker是什么? Docker的思想来自于集箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船... -
Docker是什么?
2019-05-19 22:08:32Docker是什么? Docker 是一个开源的应用容器引擎,基于Go 语言并遵从Apache2.0协议开源。 容器技术是和我们的宿主机共享硬件资源及操作系统,实现资源的动态分配,在资源受到隔离的进程中运行应用程序及其依赖... -
Docker是什么?VM(虚拟机)和Docker有什么区别
2019-07-22 08:45:21Docker是什么 Docker是一个软件箱子,或者称之为一个容器,容器间相互隔离的一钟容器技术。系统级别的容器,比如说一个CentOS,或一个Ubuntu的容器,只要一次构建,你就可以发布到在任何地方(各种您熟悉的操作系统... -
Docker 教程(一):Docker 是什么
2021-03-07 20:49:25本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《Docker 教程》 中的第一篇,本文大概介绍了 Docker 是什么和有什么用。可能在工作中,会有专业运维同学管理服务器镜像或其他内容,但是如果不了解这些... -
Docker学习记录(一)-Docker是什么
2020-01-05 22:59:06Docker是什么? Docker镜像是什么? Docker容器是什么? Docker镜像和容器之间的关系 我们为什么要使用Docker? 使用Docker mac安装Docker Docker初体验 Docker常用命令 总结 参考资料 百度百科:... -
Docker 是什么,组成
2017-12-29 16:23:19Docker 是什么,组成 -
带你认识 Docker 是什么
2019-02-23 23:30:57比如近几年运维行业比较火热的 Docker 容器技术,如果你有想法,请关注本次 Chat,本次 Chat Docker 君将带你认识 Docker 是什么?以及通过学习 Docker 的基础知识来快速理解并且上手 Docker。还等什么?赶紧上车吧... -
Docker是什么?Docker安装MySQL示例
2018-12-13 17:59:11一、Docker是什么? Docker在英文中的意思是“码头工人”的意思,大家可以想象,在码头上有很多工人,他们正在搬运货物。首先将货物放入集装箱中,然后将集装箱放入货船上,货船将这些集装箱以及其中的货物运送到... -
Docker系列:Docker是什么
2020-04-04 23:57:54一种容器技术, Docker是基于Go语言实现 目标:“Build,Ship and Run Any App,Anywhere”一次封装到处运行 为什么出现 开发与运维的鸿沟、减少运维的工作量 解决了什么问题 解决了运行环境和配置问题... -
一篇搞定Docker是什么
2020-01-10 17:23:59一、Docker是什么 1.1 什么是 Docker docker是一个开源的软件部署解决方案; docker也是轻量级的应用容器框架; docker可以打包、发布、运行任何的应用。 Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在... -
[从零开始学Docker]1. Docker是什么?为什么要使用Docker?
2017-07-18 17:03:54Docker是什么?Docker的好处是什么?为什么我们要使用Docker? -
【Docker基础】:Docker是什么?容器是什么?
2019-06-11 22:35:12Docker是什么?容器是什么?1.什么是容器?2.为什么需要它?3.举例说明4、容器是如何解决这个问题的呢?5、虚拟机和容器有些类似,那么二者之间有什么区别呢?6、容器有哪些优点呢? 1.什么是容器? 容器是完全使用... -
2.[Docker学习] Docker是什么,为了解决什么问题
2019-03-27 17:28:58文章目录Docker是什么解决了什么为题 Docker是什么 官网 https://www.docker.com/ 基于Go语言开发 是全球领先的软件容器平台 理念 Build,Ship and Run Any App,Anywhere 解决了什么为题 开发人员利用 Docker ... -
Docker是什么?Ubuntu怎样安装Docker(CE)?安装Docker常见问题?
2019-03-28 11:31:08Docker是什么?Ubuntu怎样安装Docker(CE)?安装Docker常见问题?Docker是什么?我自己对于Docker的理解集中箱化越来越受欢迎,因为集中箱化有以下优点:镜像和容器容器和虚拟机Ubuntu安装Docker(CE)操作系统需求... -
Docker简介(一)---Docker是什么
2019-05-20 15:08:53Docker是什么1.Docker为什么出现2.Docker理念3.总结 1.Docker为什么出现 一款产品从开发到上线, 从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得... -
Docker是什么,如何(两步)安装Docker及基本命令
2020-08-15 09:14:43一、docker是什么? 1.Docker是什么? Docker是在linux容器里运行应用的开源工具,是一种轻量级的虚拟机。 2.DOCKER能够做什么? Docker是帮助开发人员和开发团队构建和发布应用程序 3.Docker特点? Docker容器: ... -
Docker(一) Docker是什么、为什么用、如何用
2019-03-31 21:36:331、Docker是什么 Docker 是一个开源的应用容器引擎,只需一次创建,就可在不同类型的宿主机,比如物理服务器、虚拟机、公有云主机等,搭建出你需要的应用程序运行环境。 2、为什么要用Docker 轻量、隔离、可移植... -
docker是什么,docker是干什么的
2018-07-21 09:14:36Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学... -
docker基础——Docker是什么
2018-06-11 14:14:34Docker概念简介Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也... -
Docker 编程:docker 是什么? docker 的定义 docker 可以做什么?-YDOOK
2020-04-11 20:12:29上面是 docker 官网的标语。 docker官网的地址是:https://www.docker.com Package Software into Standardized Units for Development, Shipment and Deployment A container is a standard ...