docker是一个开源的应用容器引起,主要是打包他们的应用以及依赖包到一个可移植的容器.
Google 公司推出的 Go 语言 进行开发实现
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类
容器技术可实现不同云计算之间应用程序的可移植性
更高效的利用系统资源
更快速的启动时间
一致的运行环境
开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 “这段代码在我机器上没问题啊” 这类问题。
持续交付和部署
对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。
而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。
更轻松的迁移
由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。
为了解决开发人员和运维人员之间的协作关系
Docker技术将应用以集装箱的方式打包交付,使应用在不同的团队中共享,通过镜像的方式应用可以部署于任何环境中。
Docker直接移植于Linux内核之上,通过运行Linux进程将底层设备虚拟隔离,这样系统性能的损耗也要比虚拟机低的多
Docker应用容器的启停非常高效,可以支持大规模的分布系统的水平扩展,真正给企业开发带来福音。
方便集群部署、如果需要部署
直接pull这个镜像开个container启动即可,没有配置。
java的应用放在docker本身意义不太大,尤其是像jenkins这样很方便就能启动的应用
java本身已经有docker的核心特性(集装箱、资源限制等)
但是docker是跨语言的,是一种更优雅的解决方案,放在docker里面统一管理也未尝不可
docker你想就相当于一个新的虚拟机
你把jenkins装进去,打包成镜像,下次直接用就可以了,docker镜像需要些dockerfile制作
你就想象成windows新的系统(docker)我装好之后 安装了一英雄联盟 然后我做成ios镜像给你 你安装后就可以直接用了
docker一个服务一个镜像
把镜像 部署到 每个服务器就可以了
docker run一下就可以了