zoukankan      html  css  js  c++  java
  • Docker从入门到精通(一)——初识

    img

    1、Docker 是什么?

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

    容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

    2、Docker 为什么会出现?

    ①、一次构建,到处运行

    一个项目,从开发-上线,开发人员需要在本机进行开发,运维人员将打包的服务部署上线,涉及到操作系统变更,应用配置变更,很常见的一种情况是:

    我本地运行的好好的,怎么到你那就不行了呢?

    进而衍生出:

    项目可以带环境安装吗?也就是部署的时候,可以把原始环境一起打包复制过来。

    Docker 便能干这个事,通过 Docker 打包镜像发布测试,提供了一个标准化的解决方案,再也不用担心因为环境不一致而导致的服务部署问题。

    ②、更高效的计算资源利用

    我们部署项目,发展历程如下:

    一、物理机时代

    部署一个服务,会粗略估计服务所需要的机器性能,然后去采购对应的真实物理机器,然后在该机器上安装服务需要的一些软件,比如服务器Tomcat,数据库MySQL等等。

    物理机时代还是有很多缺点的:

    1、部署非常慢:采购机器,安装系统,安装软件等等;

    2、成本高以及资源浪费:通常为了以防服务性能不够,我们都会尽量采购比预期资源高一点的机器,不仅会增加成本,还会造成机器资源浪费;

    3、难于扩展与迁移:由于是真实的物理机,扩展或者迁移会比较麻烦;

    二、虚拟机时代

    VMware 相信大家都玩过,通过VMware 我们能在自己电脑上创建很多虚拟机器,而物理机时代就是在一台真实物理机上,虚拟出多台机器,而且每台机器都可以看做是一台独立的电脑。

    相对于物理机时代,虚拟机能够在一台机器上创建多台机器,能够充分利用资源,并且也做到了机器之间的隔离,机器性能不够用了,也可以通过 Hypervisor 随时进行扩展。

    但是也有个缺点,我们每一台虚拟机都要独立安装操作系统,大家知道操作系统其实也是比较占用性能的,有多少台虚拟机,我们就得多安装多少个操作系统,这样就浪费了很多资源,那么怎么解决呢?

    三、容器化时代

    容器类似于 VM,但是它们具有被放宽的隔离属性,可以在应用程序之间共享操作系统(OS)。 因此,容器被认为是轻量级的。容器与 VM 类似,具有自己的文件系统、CPU、内存、进程空间等。可以把容器看做是不用安装操作系统的虚拟机,容器化技术比虚拟机更加灵活,更加小巧,更加极致的利用物理机资源。

    3、Docker 的优点

    ①、部署快,开发测试更加敏捷

    通过Docker 打包镜像发布测试,一键运行。

    ②、快速扩缩机器

    由于Docker容器快速启动特性,可以很快速的启动几十个、上百个容器来提供更多并发和资源利用率,并且这么多容器也有比较成熟的解决方案来统一管理,比如K8S。

    ③、提高系统利用率,降低硬件成本

    轻量级的虚拟机,更省资源。

    ④、跨环境可移植

    ⑤、更好的支持微服务

    微服务是近几年来IT圈内谈论比较多的一个名词,意义也很简单:尽可能细粒度拆分业务程序架构,由多个独立服务组成业务系统。

    而Docker的容器设计原则:一个容器一个服务,容器之间相互隔离,和微服务正好遥相呼应。

    ⑥、应用运维标准化,支持不同语言应用

    ⑦、避免云厂商锁定

    4、Docker 学习网站

    ①、官网(永远的神)

    https://www.docker.com/

    ②、官方文档

    https://docs.docker.com/

    ③、仓库地址

    https://hub.docker.com

    作者:IT可乐

    资源:微信搜【IT可乐】关注我,回复 【电子书】有我特别筛选的免费电子书。
    本文版权归作者所有,欢迎转载,但未经作者同意不能转载,否则保留追究法律责任的权利。
  • 相关阅读:
    通过代码去执行testNG用例
    启动jenkins服务错误
    linux 添加用户到sudo中
    通过jenkins API去build一个job
    iptables
    比较git commit 两个版本之间次数
    linux awk命令详解
    cron和crontab
    工作随笔——CentOS6.4支持rz sz操作
    Jenkins进阶系列之——15Maven获取Jenkins的Subversion的版本号
  • 原文地址:https://www.cnblogs.com/ysocean/p/15647151.html
Copyright © 2011-2022 走看看