zoukankan      html  css  js  c++  java
  • 容器化之Docker小知识普及

      Docker确实是个好东西,相当于一个小型虚拟机,里面环境隔离只要有对应的镜像就能运行业务应用、运行基础应用、能跑数据库等等,还能跑linux等等。

    Docker 从狭义上来讲就是一个进程,从广义上来讲是一个虚拟容器,其实更专业的叫法是应用容器( Application Container ),Docker 进程和普通的进程没有任何区别,它就是一个普通的应用进程。不过是用来操作镜像文件的。所以 Docker 进程 + 构建的应用镜像文件就等于 Docker 容器。

     

    Docker基本概念有三项:镜像,容器,仓库

      镜像相当于java中的jar包;镜像仓库相当于jar存储的仓库,只不过这里存储的是镜像;容器就是一个镜像运行的实例,相当于java运行起来的一个进程。

      镜像有基础镜像,如centos、mysql、redis镜像,这些自己不用做 官网有人已经做好了这些镜像 可以直接拉下来用,如果要做自己的特殊需要的镜像,可以直接在这些基础镜像上构建。

    容器

      你可以从镜像中创建容器,这如同运行一个程序,不过更轻量,启动更快,秒启。

      每个容器都是独立的封闭的,需要对外提供服务就需要公开容器的特定端口,在启动 Docker 的时候将容器的特定端口映射到宿主机上面的任意一个端口,可以将容器的端口映射成任意的对外端口,可解决多个应用端口相同产生的冲突,所以就不需要通过代理来解决冲突。容器对外端口与宿主机的端口映射可以通过下面的命令来完成。
    启动 docker 容器

    docker run -d -p 2222:22 --name 容器名 镜像名
    -d 守护容器,就是后台运行,退出命令窗口容器也不会停止
    -it 交互式容器 退出命令窗口容器就停止运行了
    -p 宿主机端口和容器端口映射
    8081:80 宿主机端口: 容器公开的端口

     

    仓库Docker registeries

      docker仓库用来存放镜像的,仓库存在公有和私有之分,公有仓库 docker hub 提供了非常多的镜像文件,这些镜像直接拉取下来就可以运行了,你也可以上传自己的镜像到 docker hub 上面。同时也可以自己搭建私有仓库用于团队项目管理如可以用Nexus,怎么搭建下几篇再说,在k8s中也在专门的仓库组件。

    Docker 的生命周期

    • 开发构建镜像并将镜像 push 到 Docker 仓库 
    • 测试或者运维从 Docker 仓库拉取镜像到测试服务器部署
    • 通过镜像文件开启 Docker 容器并提供服务

       总之构建容易分发简单 · 隔离应用解除依赖 · 快速部署测完就销

    Docker和传统虚拟机有啥区别

    Docker这个虚拟机超级轻量级,仅仅是一个进程而已。与传统的虚拟机比如 VM 有着巨大的差别:

      Docker相对于 VM 有以下几个优点:

    启动速度快,容器启动本质就是一个开启一个进程而已,因此都是秒启,而 VM 通常要更久。

    资源利用率高,一台普通 PC 可以跑成百上千个容器,你跑十个 VM 试试。

    性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源。

      所以很多移动互联网的应用或者云计算的后端节点都可以用 docker 来替换物理机器或者虚拟机,比如腾讯地图的很多后台服务基本上都迁移 docker 部署了。

    docker是应用的基石

     

    最后强调为什么要用Docker

    Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 “这段代码在我机器上没问题啊” 这类问题;——一致的运行环境
    可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。——更快速的启动时间
    避免公用的服务器,资源会容易受到其他用户的影响。——隔离性
    善于处理集中爆发的服务器使用压力;——弹性伸缩,快速扩展
    可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。——迁移方便
    使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。——持续交付和部署

  • 相关阅读:
    webApi2 结合uploadify 上传报错解决办法
    对特殊字符进行转移
    数据库事务MTDC出错解决办法
    查询数据所有的外键关系
    查询SQL阻塞语句
    Django介绍
    Docker简介
    Docker CE部署
    jQuery快速入门
    系统批量运维管理器paramiko详解
  • 原文地址:https://www.cnblogs.com/zhangs1986/p/10611151.html
Copyright © 2011-2022 走看看