容器化之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 可以通过定制应用镜像来实现持续集成、持续交付、部署。——持续交付和部署
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
为什么要从经典网络迁移到专有网络VPC?
背景 作为较早开始全面使用阿里云的用户,我们的业务系统一开始就使用了操作简单、易用性高、不需要提前进行网络规划,IP地址全部由阿里云统一分配的网络。这个网络也是当时阿里云唯一的网络模型,现在称之为经典网络。在只使用云服务器ECS的场景下,经典网络的简便性非常突出。不过,随着业务场景的复杂化以及各种云产品的不断使用,经典网络的一些问题开始暴露。 问题 首先,经典网络下的安全性维护存在问题。经典网络是一个大二层设计,阿里云全网可达,这本身就存在安全问题。而要解决甚至只是初步的堵上一些安全漏洞,都需要付出巨大的维护成本。比如:经典网络下的负载均衡SLB本身是全网可达的,即使是内网也是全网可达的。当然,SLB是提供了访问控制的。但是,如果想要保证业务系统中每增加一台机器,都能正常访问对应的SLB,那么就要保证每个SLB对应监听端口的对应访问控制策略得到及时更新。这在有大量SLB和ECS存在,而且经常有新增和释放的情况下,需要付出不少的开发工作量和维护工作量。再比如:数据库类产品RDS和MongoDB等,安全的要求性必然更高,只有授权白名单中的IP方可访问。这也同样是需要付出不少开发工作量和维护...
- 下一篇
基于spring boot框架的云上微服务整体监控方案
背景 spring boot是一个轻量级的java开发框架,其不仅提供了开箱即用的默认设置,简化了应用开发,还提供了一些大型项目中常见的非功能性特性,如内嵌服务器、安全、指标、健康检测、外部化配置等。而在云上,阿里云有云监控、应用实时监控、日志服务等。在这样的背景下,我们构建基于spring boot框架的云上微服务全面监控方案相对方便很多。 主机监控 对于云主机ECS,在购买后,就会默认提供ECS自带的默认基础监控。不过,ECS基础监控指标只有CPU使用率、网络流量和速率以及磁盘读写次数和字节数,缺少了常用的一些监控项目和指标,比如内存使用情况和磁盘空间占用情况。所以不能满足日常的主机监控需求。 云监控提供了云上几乎所有产品的默认监控服务。对于云主机ECS,只要安装好云监控插件,就会从操作系统内部获取主机运行时的各种数据,并提供图表查看和报警功能。对于云主机,云监控提供了CPU、内存、系统平均负载、磁盘、网络、进程的详细监控指标和数据,几乎涵盖了主机监控需求的各个方面。同时,云监控插件的采集频率为15秒一次,可完全满足监控报警实时性的要求。 服务存活监控 对于自研服务存活状态的监控,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境