what?

定义

我们知道,软件依赖的环境大致包括:

• 配置文件
• 代码
• tomcat
• JDK
• 操作系统

Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,然后很容易地发布和应用到任意平台中。

思想:

  • 集装箱
  • 标准化
  • 隔离

核心

docker有3大核心:镜像、容器、仓库。

鲸鱼是操作系统。
要交付的应用程序是各种货物,要将各种形状和尺寸不同的货物放到大鲸鱼上,得考虑每件货物怎么安放(应用程序配套的环境),还得考虑货物和货物之间能否重叠起来(应用程序依赖的环境是否会冲突)。
现在使用了集装箱(容器)把每件货物都放到集装箱里,这样大鲸鱼可以用同样地方式安放、堆叠集装了,省事省力。
即:打包放到鲸鱼上,鲸鱼放到服务器上。也就是“build——ship——run”,这样在自己的电脑上怎么运行,在服务器上也会怎么运行。
用docker运行一个程序的过程:
去仓库把镜像拉到本地,然后用一条命令把镜像运行起来,变成容器。

(1) 镜像-复制的程序

  • 定义:
    Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。

  • 作用
    类似于虚拟机的快照,用来创建新的容器。

  • 特点:
    镜像不包含任何动态数据,其内容在构建之后也不会被改变。

(2)容器-集装箱

  • 运行程序的地方
  • 镜像是静态的,每一层都只是可读的,而容器是动态的,里面运行着我们指定的应用。

(3)仓库-存放镜像的地方

  • 存放镜像的地方,和git类似
why?

在知乎上看到一个很好的解释:

简单来说就是,不同的应用程序所依赖的环境不一样,如果把他们依赖的软件都安装在一个服务器上,不仅需要调试很久,而且可能会有冲突。
如果想把两个应用程序隔离起来,可以在服务器上创建不同的虚拟机,不同的虚拟机放不同的应用,但是虚拟机的开销比较高。docker作为轻量级的虚拟机,是一个很好的工具。

作用?

  • 解决运行环境不一致所导致的问题。这样就不会产生“本地运行没问题,可一到服务器上就不行了”的情况。
  • 限定最大的cpu使用内存硬盘,这样就起到了隔离的作用,避免产生“一块代码产生死循环,把磁盘占满了,其它程序也挂了”的情况。
  • 双11时扩展机器用。

总结成一句话:docker的标准化让快速扩展,弹性伸缩变得简单

使用之前和之后

之前,可以发现,每发布一个程序,都要走一遍以下的流程:

之后:

how?

docker安装?

  1. 检查计算机是否符合要求,版本和是否开启了虚拟化之类的。
  2. 去官网下载并安装
  3. 测试是否安装成功

这是一篇描述在win10上安装docker的博客:
https://blog.csdn.net/hunan961/article/details/79484098

docker的使用?——hello world

  • 从中央库中拉取镜像
  • 查询到拉取成功
  • 运行镜像,查看到结果

原理解析

  • docker pull的时候,Docker damemon先在本地仓库中找,如果没有,再去中央仓库中拉取,拉取到本地仓库就好了。
  • docker run的时候,也是先在本地仓库中找,如果有,直接放到容器里用。否则,去中央仓库中拉取。
小结

这是自己对docker有些好奇,所以简单了解并总结了一下,欢迎大家的交流。
参考资料:
https://zhuanlan.zhihu.com/p/53260098
https://www.zhihu.com/question/28300645
http://blog.51cto.com/ganbing/2085769?from=timeline&isappinstalled=0

docker是啥?是干什么的?相关推荐

  1. docker是干什么的,docker常用命令

    一.百度百科 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化.容器是完全使用沙箱机 ...

  2. docker是干什么的,docker常用命令每日一练

  3. Docker不香吗,为啥还要K8s?

    Docker不香吗,为啥还要K8s? [51CTO.com原创稿件]作者上一篇文章着重讲解了 Docker,其实遗留了一个大问题.Docker 虽好用,但面对强大的集群,成千上万的容器,突然感觉不香了 ...

  4. Docker 不香吗,为啥还要 K8s?

    本文来源:51CTO技术栈 Docker 虽好用,但面对强大的集群,成千上万的容器,突然感觉不香了. 这时候就需要我们的主角 Kubernetes 上场了,先来了解一下 K8s 的基本概念,后面再介绍 ...

  5. Docker swarm集群详解(一)

    一.简介 Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源.Swarm和Ku ...

  6. Docker安全性支持(使用Cgroups机制实现容器资源控制)

    前言 Docker作为最重视安全的容器技术之一,在很多方面都提供了强安全性的默认配置,其中包括:容器root用户的Capability能力限制.Seccomp系统调用过滤.Apparmor的 MAC ...

  7. 运维工程师该干什么学些什么

    运维工程师该干什么学些什么?[致菜鸟] 很多刚学linux运维的朋友,总是搞不懂,运维工程师工作中干些啥?学的这些东西有什么用?今日我特来总结总结,希望能帮助即将跨入该行的人形成一个整体的思路.下面红 ...

  8. docker日志位置

    微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这样可以降低开发难度.增强扩展性.便于敏捷开发.当前被越来越多的开发者推崇,很多互联网行业巨头.开源社区等都开始了微服务的讨 ...

  9. python用途与前景-python能用来干什么

    编者按:Python因为简单全面易用而成为近年来大热的编程语言.但是很多人学习了这门余元的语法和基本功能之后却不知道Python能干什么以及怎么做.Realpython上面的一篇文章于是把Python ...

最新文章

  1. 流程的python-《流畅的 Python》到底好在哪?
  2. Windows7下Caffe-SSD的应用(一)——在Windosw7下编译配置Caffe-SSD CPU版本
  3. 6-4cifar10数据介绍读取处理(下)
  4. VSCode配置ESLint
  5. eclipse乱码解决
  6. Arcgis javascript那些事儿(十四)——连接oracle
  7. python常考笔试题
  8. halcon 深度学习标注_Halcon18--深度学习应用问题记录
  9. html a4纸张大小像素,CSS设置A4纸张大小
  10. JavaSE实战项目:飞翔的小鸟(完整版)
  11. Andriod8.0去除Launcher谷歌搜索框
  12. JQuery图片的显示和隐藏
  13. ip6plus电池测试软件,超雪维修教程(七):iphone6/6 plus更换电池详细图文步骤
  14. html5随鼠标移动动画,使用JS实现气泡跟随鼠标移动的动画效果
  15. 网络安全审计之CMS代码审计
  16. ros构建机器人运动学模型_ROS环境下的机器人仿真模型构建方法研究
  17. sqlite3交叉编译
  18. iOS应用之微信支付集成-直接前端集成
  19. 推挽电路和开集电路介绍
  20. CSS2.1 参考手册

热门文章

  1. Win系统和VMware虚拟机ubuntu18.04系统利用samba共享文件过程中,解决虚拟机和主机不在同一网段、虚拟机IP地址漂移问题
  2. 串口传输速率为9600bps意味着每分钟最多可传送多少个ASCII码字符
  3. 著名的假设“缸中之脑”,我们怎么确定自己不是活在电脑程序中?
  4. 日历查询系统c语言1,C语言 日历查询系统 成品
  5. 谷歌、微软、Meta?谁才是 Python 最大的金主?
  6. vue中webpack5版本报错If you want to include a polyfill you need , If you don‘t want to include a polyfill
  7. Oracle 的汉译名 甲骨文 由来
  8. 小米8 解账户锁 线刷包 刷入 教程 MIUI12系统
  9. OSChina 周三乱弹 ——大变魔术啦,汪星人秒变熊孩子
  10. Python练习题(1)