Docker:Docker思想&解决问题&Docker优势&Docker基本概念&Docker安装&基本设置&常用命令&网络管理&数据卷&构建自定义镜像&多容器管理

Docker是一个应用容器,模仿集装箱理念解决软件部署、环境冲突和安全问题。它通过轻量级的容器实现应用的标准化和高效移植。本文介绍了Docker的思想、解决的问题、优势,并详细讲解了Docker的基本概念、安装过程、常用命令以及网络管理和数据卷操作。此外,还对比了Docker与VM的区别,并探讨了Docker在产品交付、环境迁移和安全性方面的贡献。
摘要由CSDN通过智能技术生成

什么是Docker?

Docker是一个用来装应用的容器,就好比杯子用来装水,笔筒用来装笔,书包用来装书一样,你可以把hello world放到Docker里,你可以把网站放到Docker里,你可以把你想的到的任何程序放到Docker里。

Docker的思想

Docker的思想来源于集装箱

下图为运输行业没有集装箱之前的货物处理:

在这里插入图片描述

上面的处理异常麻烦,而且还有下面三个问题:

1.货物的运输效率非常慢并且需要非常大的人力资源

2.货物直接与外界接触,不安全

3.每种类型的货物都需要专门的车辆或者轮船来运输

在这里插入图片描述

Docker 的思想来源于集装箱,集装箱最大的作用在于能够将货品标准化,在运输的过程中,不需要直接装载和卸载各种各样的商品,而是统一标准的集装箱,这样装载和卸载的环节就可以实现流水线和自动化了,并且商品封装在集装箱中,没有暴露在外面,提高安全性,集装箱与集装箱之间也是互相隔离,不会有任何相互影响的问题。我们也不再需要专门的船去运输专门的货品,只要货品在集装箱内好好封存着,那就可以使用一艘大船将他们都运走。并且你可以很方便的将集装箱装载到飞机、轮船、货车、火车,大大的提高了运输的便利性。

对于我们来说,Docker 也担任了集装箱类似的角色,我们的应用或者所依赖的第三方服务可以理解为货品,而 Docker 则是将我们的货品规范化管理起来,从而可以轻易的完成产品交付,环境转移等等诸多问题。还有我们的货品由Docker这个集中箱封装,对外隔离,提高安全性。并且 Docker 对于主机资源的消耗非常小,可以实现对服务器资源的最大利用。

重点:就是借鉴集装箱的全球统一标准的思想,因为是全球统一标准,就能够实现流水线式来处理流水线上的货物

Docker为我们解决了哪些问题?

首先目前软件业遇到的问题:

1.大量的重复部署的工作

在这里插入图片描述

在这里插入图片描述

2.应用上线的安全性问题:

没有容器之前,应用由于是直接部署在系统上,安全性问题不是一点半点
在这里插入图片描述
而Docker解决安全性的问题:是采取容器与外界系统的隔离
在这里插入图片描述

3.环境冲突带来的资源浪费问题

在这里插入图片描述

有了Docker之后环境冲突可以这样解决环境冲突的问题

在这里插入图片描述

简单总结为:

  • 便携性

    另一问题是,以传统的方式部署你的应用,如果我们的应用如果后期需要迁移(这里的迁移包括相同操作系统和不同操作系统的迁移),还是需要做大规模的集群,都是一件工作量非常大的操作。而容器化了的应用,对这些操作都是非常方便的。

  • 安全性

    最后一个不得不提的问题就是安全,以传统的方式部署你的应用,如果该应用被攻击者攻击,或者因为程序自身的bug,又或是运行环境多个应用间混乱的依赖关系导致的问题,这样的话,你的服务器系统安全危险级别会很高,因为这些问题将直接影响你的系统安全。但如果你的应用是运行在Docker容器中,那么一切的危害都会被隔离在容器内,因为容器的资源跟系统是隔离的,危害将被降到最低。

  • 组织有序性

    以传统的方式部署你的应用,可能出现由于多个应用程序的依赖不用,导致应用之间的依赖变得非常混乱,若此时出现两个应用依赖同一个程序但却依赖不同版本,便会出现让人比较头痛的问题,使用Docker便可以很方便的帮我们管理各个应用的依赖,并以容器为基础将应用的运行环境独立开来,从而不会互相影响,还能提高资源利用率。

Docker VS VM

Docker 的核心是 基于 LXC(Liunx container) 技术的实现,可以理解为一个轻量级的虚拟机(实际上是容器的概念,Docker 不是虚拟机),Docker 使用 Linux 的 namespace 和 cgroups 技术实现容器隔离资源限制

Docker的容器隔离的技术是依赖于Linux的技术,与VM完全虚拟出计算机隔离主机的原理根本不同

具体上的不同

在这里插入图片描述

在这里插入图片描述

应用场景

面向产品:

产品的交付模式改变

之前需要的是:要开发人员到现场部署,现在有了Docker之后,直接发个镜像过去就OK了

面向开发:

个人开发环境发生改变

比如之前在开发环境没有任何问题,但是在测试环境有问题

有了Docker之后,可以在镜像上运行环境,开发/测试的时候

直接在容器上测试就不会有上面的问题了

面向运维:

获得比虚拟机性能损失更小的解决方案

可以更快的进行自动化扩容(VM 是分钟级扩容,Docker 是秒级)

Docker 适用于微服务架构

面向测试:

同一环境下多版本测试

自动化、微服务、大规模集群(微博红包案例)百度的 Paas 平台、等等…

应用场景扩展:http://www.docker.org.cn/docker/151.html
docker中文学习网:http://www.docker.org.cn

Docker带来的挑战:DevOps

基本概念

Docker 有三大重要的概念:仓库、镜像、容器    

仓库(Repository):

仓库是用于存放镜像的地方,类似于 Maven 仓库、Git 仓库、yum仓库等用途,仓库之上还有仓库注册服务器(Registry)的概念,上面存放着多个仓库,每个仓库中又有多个镜像,而每个镜像又可以有多个标签(tag)。目前最大的公开仓库是 Docker Hub,我们可以使用类似 Git 命令的方式去 pull/push 镜像

镜像(Image):

可以理解为一个只读的模板,镜像可以用来创建容器,一个镜像可以创建多个容器,你可以直接从官方仓库(docker hub)或者其他私服仓库拉取(pull)想要的镜像,或通过 Dockerfile 来构建属于你自己的镜像,这一切操作都非常的简单

容器(Container):

容器是由镜像创建的实例,他可以被启动、停止、运行、删除(生命周期)。每个容器之间是互相隔离的、保证安全的平台。可以把容器看做为一个简单的 Linux 环境

安装Docker

安装Docker的大前提:Linux内核必须是3.1 不然无法安装

Docker 的安装相对来说也算比较简单, Docker 官方要求 CentOS 操作系统内核必须在 3.10 以上,所以我们这边使用 CentOS7 来安装;

PS:可以使用 uname -r 来查看当前系统的内核版本

在这里插入图片描述

  1. 更新 yum 仓库,确保 yum 包都是最新版本
yum update

提示:假如不是阿里云ECS而是本地搭建的虚拟机,该命令慎用,因为会耗费大量的时间

  1. 查看是否有安装 docker,若有则将其删除
yum list installed |
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值