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 可以通过定制应用镜像来实现持续集成、持续交付、部署。——持续交付和部署

容器化之Docker小知识普及的更多相关文章

  1. 【转帖】使用容器化和 Docker 实现 DevOps 的基础知识

    使用容器化和 Docker 实现 DevOps 的基础知识 https://www.kubernetes.org.cn/6730.html 2020-02-24 15:20 灵雀云 分类:容器 阅读( ...

  2. Docker容器化【Docker镜像与容器相关命令】

    # Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用 ...

  3. Windows Server 2019 容器化探索-Docker安装

    Docker on Windows Server 2019 微软自Windows Server 2016开始支持Docker,今天我们将介绍在Windows Server 2019上安装并使用Dock ...

  4. 容器化 — 基于Docker技术容器云

    导读:本文介绍了基于Docker技术的企业级应用容器平台,从云的定义.云服务分类,到用友云PaaS基础平台.平台总体架构.架构预览.部署架构.平台核心价值和核心竞争力,阐述PaaS基础平台成为广大传统 ...

  5. docker基础知识普及(一)

    背景 这篇内容是之前给部门同事培训时写的文档,旨在传达一些docker相关概念,有个基本印象,当然,以下内容都来自网络,我只是个搬运工.具体操作在下篇文章中 一.什么是docker? 1. Docke ...

  6. docker小知识

    1,docker 使用普通用户 添加用户组: sudo groupadd docker 加入docker 组 sudo gpasswd -a ${USER} docker 或 usermod -aG ...

  7. Docker最全教程——数据库容器化(十)

    终于按时完成第二篇.本来准备着手讲一些实践,但是数据库部分没有讲到,部分实践会存在一些问题,于是就有了此篇以及后续——数据库容器化.本篇将从SQL Server容器化实践开始,并逐步讲解其他数据库的容 ...

  8. python + docker, 实现天气数据 从FTP获取以及持久化(五)-- 利用 Docker 容器化 Python 程序

    背景 不知不觉中,我们已经完成了所有的编程工作.接下来,我们需要把 Python 程序 做 容器化 (Docker)部署. 思考 考虑到项目的实际情况,“持久化天气”的功能将会是一个独立的功能模块发布 ...

  9. Docker---大型项目容器化改造

           虚拟化和容器化是项目云化不可避免的两个问题.虚拟化由于是纯平台操作,一个运行于linux操作系统的项目几乎不需要做任何改造就可以支持虚拟化.而项目如果要支持容器化则需要做许多细致的改造工 ...

随机推荐

  1. .NET 中使用 Mutex 进行跨越进程边界的同步 - walterlv

    原文:.NET 中使用 Mutex 进行跨越进程边界的同步 - walterlv .NET 中使用 Mutex 进行跨越进程边界的同步 2018-12-30 08:41 Mutex 是 Mutual ...

  2. Linux input

    Linux input 输入设备都有共性:中断驱动+字符IO,基于分层的思想,Linux内核将这些设备的公有的部分提取出来,基于cdev提供接口,设计了输入子系统,所有使用输入子系统构建的设备都使用主 ...

  3. message contains no documents code:13066 mongdb数据库报的错误

    message contains no documents  code:13066stackoverflow上面的回答是: What version of the C# driver are you ...

  4. 工作流管理平台Airflow

    Airflow 1. 引言 Airflow是Airbnb开源的一个用Python写就的工作流管理平台(workflow management platform).在前一篇文章中,介绍了如何用Cront ...

  5. 双目相机标定以及立体测距原理及OpenCV实现

    单目相机标定的目标是获取相机的内参和外参,内参(1/dx,1/dy,Cx,Cy,f)表征了相机的内部结构参数,外参是相机的旋转矩阵R和平移向量t.内参中dx和dy是相机单个感光单元芯片的长度和宽度,是 ...

  6. 制作一个简单的WPF图片浏览器

    原文:制作一个简单的WPF图片浏览器 注:本例选自MSDN样例,并略有改动.先看效果: 这里实现了以下几个功能:1.  对指定文件夹下所有JPG文件进行预览2.  对选定图片进行旋转3.  对选定图片 ...

  7. SecureCRT下载/注册/安装镜像文件

    #$language = "VBScript" #$interface = "1.0" ' This automatically generated scrip ...

  8. 【转载】json 数据 添加 删除 排序

    张映 发表于 2014-02-10 分类目录: js/jquery 标签:json, 删除, 排序, 添加 js数据格式和json数据格式,各有各的用处,就个人而言,json更好用一点,js自身的数组 ...

  9. android studio中使用9-patch报错mergeDebugResource及Duplicate resources错误处理

    由于项目中新导入了两张图片,进行9-patch之后,文件名称包含XXXX.9.png , 而android studio 对资源文件的名称有要求仅支持[A-Z][a-z][0-9]格式  而XXX.9 ...

  10. Introduction To The Smart Client Software Factory (CAB/SCSF Part 18)

    1. Shell This is the start-up project for the solution. It is very similar to the start-up projects ...