从零开始,Docker进阶之路(一):Docker基础

一、简介与概述

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

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

2.Docker的主要目标是通过对应用的程序组件的封装,分发,部署,运行等生命周期的管理 ,使用户的app(也可以是一个Web应用程序或者数据库应用等)及其环境能够做到"一次封装,到处运行"

3.将应用运行到Docker容器上面,而Docker容器在任何操作系统上都是一致的,这就是实现跨平台跨服务器。只需一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

4.容器是完全使用沙箱机制 ,相互之间不会有任何接口,更重要的是容器性能开销极低

总结:Docker实际上就是一个虚拟化轻量级Linux服务器,可以解决我们在开发环境中运行配置问题。

二、为什么需要使用Docker

Docker : 虚拟化容器技术

Docker主要解决我们开发环境配置迁移的问题

下面举出一个示例

  • 我们现在开发了一个JavaWeb项目,需要依赖很多的环境配置,比如Tomcat、JDK、Nginx、Redis环境等等
  • 本地需要安装这些环境,再打war包运维部署在Linux服务器,运维人员也需要在Linux服务器上安装这些环境
  • 但是有时候会发生这些问题:我在本地运行环境没有问题,但是打包到Linux服务器上总是遇到很多错误,大多数由于一些版本冲突影响。
  • 所以在这时候我们就可以使用Docker安装和部署软件,直接将springboot项目制作成一个镜像文件,镜像文件中包含JDK版本等等信息,就可以减少依赖冲突的概率,直接部署到Linux服务器。

三、使用Docker的好处

1.简化配置 安装创建非常的方便

2.代码流水线(Code Pipeline)管理 传统项目部署可能需要经过许多环节,容易产生版本的依赖冲突问题,Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少。

3.Devops开发与运维一体化减少沟通的成本

4.虚拟技术、快速部署、弹性扩容

四、Docker核心三要素

1.仓库----专门存放镜像文件,类似于app软件市场

2.镜像----类似于安装包

镜像方式来源:

3.容器----运行我们的镜像文件 自己独立的ip和网络信息化 虚拟化出一个轻量级的Linux操作系统精简版本

五、应用场景

1.web应用的自动化打包和发布。

2.自动化测试和持续集成、发布

3.在服务型环境中部署和调整数据库或其他后台应用。

4.从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的Paas环境

六、容器与虚拟机的区别

什么是虚拟机:在一台物理机器上,利用虚拟化技术,虚拟出来多个操作系统,每个操作系统之间是隔离的。

从下到上理解:

从下往上看,最下面的一层是物理机,可以是服务器;往上一层是主机操作系统。

再往上就是虚拟机软件了,比如我们常用的VirtualBox、VMWare,它们的作用是模拟计算机硬件;继续向上就是虚拟机模拟出来的操作系统了;在虚拟的操作系统中,安装所需的软件、组件等。最后就是具体的应用了。

最下面两层,概念同上。

再往上,可以看做是Docker容器的管理器。

依赖和应用都被打包成了Docker镜像。例如,JDK、Tomcat、应用都被打包在了一起,运行在Docker容器里,容器与容器间是隔离的。

七、Docker和虚拟机的区别

1.从两者的架构图上看,虚拟机是在硬件级别进行虚拟化,模拟硬件搭建操作系统;而Docker是在操作系统的层面虚拟化,复用操作系统,运行Docker容器。

2.Docker的速度很快,秒级,而虚拟机的速度通常要按分钟计算。

3.Docker所用的资源更少,性能更高。同样一个物理机器,Docker运行的镜像数量远多于虚拟机的数量。

4.虚拟机实现了操作系统之间的隔离,Docker是进程之间的隔离,虚拟机隔离级别更高、安全性方面也更强。

5.虚拟机和Docker各有优势,不存在谁替代掉谁的问题,很多企业都采用物理机上做虚拟机,虚拟机中跑Docker的方式。

相关推荐
漫谈网络10 分钟前
基于 Netmiko 的网络设备自动化操作
运维·自动化·netdevops·netmiko
꧁坚持很酷꧂36 分钟前
Linux Ubuntu18.04下安装Qt Craeator 5.12.9(图文详解)
linux·运维·qt
时迁24737 分钟前
【k8s】k8s是怎么实现自动扩缩的
云原生·容器·kubernetes·k8s
小诸葛的博客2 小时前
详解Linux中的定时任务管理工具crond
linux·运维·chrome
一默19912 小时前
CentOS 7.9升级OpenSSH到9.9p2
linux·运维·centos
BranH3 小时前
Linux系统中命令设定临时IP
linux·运维·服务器
极小狐3 小时前
极狐GitLab 项目功能和权限解读
运维·git·安全·gitlab·极狐gitlab
宁酱醇3 小时前
GitLab_密钥生成(SSH-key)
运维·ssh·gitlab
秋风起,再归来~3 小时前
【Linux庖丁解牛】—进程优先级!
linux·运维·服务器
诡异森林。4 小时前
Docker--Docker网络原理
网络·docker·容器