简介

-Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器 上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
-Docker是一种轻量级的“虚拟机”,是一个开源的应用容器引擎。容器是完全使用沙箱机制,相互之间不会有任何接口

  • 轻量级表示它体积小,灵活
  • 而说它是虚拟机,又不是真正的虚拟机,因为它里面没有系统
  • 开源表示它是免费的

为什么选择 Docker

1、更高效的利用系统资源
由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,可以运行更多数量的应用。

2、更快速的启动时间
直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、的启动时间。

3、一致的运行环境
由于开发环境、测试环境、生产环境不一致,导致有些bug并未在开发过程中被发现。而Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现上述问题。

4、持续交付和部署
使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过Dockerfile来进行镜像构建,并结合持续集成(Continuous Integration)系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署(Continuous Delivery/Deployment)系统进行自动部署。
而且使用Dockerfile使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的在生产环境中部署该镜像。

5、更轻松的迁移
由于Docker确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。 因此用户可以很轻易的将在一个平台 上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

6、更轻松的维护和扩展
Docker使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。 此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制, 大大的降低了应用服务的镜像制作成本。

Docker优势和虚拟机的区别

docker把容器化技术做成了标准化平台(docker统一/指定了容器化技术的标准化平台)
使用docker有什么意义

  • docker引擎统一了基础设施环境-docker环境—》image —》封装一个简易的操作系统
  • docker引擎统一了程序打包(装箱)方式-docker镜像—》images
  • docker引擎统一了程序部署(运行)方式-docker 容器——》基于镜像——》运行为容器(可运行的环境)
对比参数虚拟机容器
启动时间慢 (分钟级别)快速(毫秒级别)
占用空间大(整个系统的大小,几G)小(内核大小,几M)
系统隔离逻辑隔离依赖于内核(内核共享)
安全性 (因为隔离性)低(使用原系统内核)
  • docker解决了vm的一个环境孤岛的问题
  • docker可以自定义传参(创建-创建镜像/容器、启动(基于镜像启动)之前)

Docker的使用场景

  • 应用程序(封装/构建镜像)——》运维下载,使用容器技术进行运行/发布
    打包应用程序简单部署
  • 可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦),例如:服务器从腾讯云迁移到阿里云
  • 持续集成和持续交付(cI/CD) :开发到测试发布
  • 部署微服务
  • 提供PAAs产品(平台即服务){OpenStack的云主机类似于阿里云的ECS,属于IAAS、Docker (KBS)属于PAAS}

名称空间

Docker使用一种称为namespaces提供容器的隔离工作区的技术。运行容器时,Docker会为该容器创建一组名称空间。这些名称空间提供了一层隔离。容器的每个方面都在单独的名称空间中运行,并且其访问仅限于该名称空间。
Docker Engine在Linux上使用以下名称空间:

容器完美的实现了6个名称空间隔离(namespace资源隔离-用容器化技术封装)

  • mount文件系统,挂载点
  • user操作进程的用户和用户组
  • pid进程编号
  • uts主机名和主机域
  • ipc信号量、消息队列,共享内存(理解,不同的应用调用的时候应该使用不同的内存空间)
  • net网络设备、网络协议栈、端口等

Docker的核心概念(重点)

  • 镜像(镜像的压缩包)
  • 容器(实例,通过镜像创建)
  • 仓库(存放镜像的地方)
    • 公有仓库:Docker官方仓库
    • 私有仓库:个人化、私有化的仓库

控制组( Control groups)

Linux上的Docker引擎还依赖于另一种称为控制组
(cgroups)的技术。cgroup将应用程序限制为一组特定的资源。控制组允许Docker
Engine将可用的硬件资源共享给容器,并有选择地实施限制和约束。例如,您可以限制特定容器可用的内存。

CentOS中的安装方法

方法一:
使用CURL获得Docker的安装脚本(get-docker.sh)进行安装

方法二:
使用yum仓库安装

我们使用第二种方法安装

二、Docker相关命令

1、安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

#yum-utils提供了yum-config-manager
#device mapper存储驱动程序需要device-mapper-persistent-data和lvm2
#Device Mapper 是Linux2.6内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。

在这里插入图片描述

2、设置阿里云镜像源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述

3、安装Docker-CE

yum install -y docker-ce
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
vim /etc/selinux/config
SELINUX=disabled
systemctl start docker.service 
systemctl enable docker.service

在这里插入图片描述
在这里插入图片描述
配置阿里云镜像加速,不然下载速度很慢
加速地址从自己的阿里云上获取
阿里云官网:https://account.aliyun.com/
获取方式:登录阿里云–>控制台–>在上面搜索容器镜像服务–>左下角的镜像加速器
在此页面中显示阿里云的镜像加速地址和配置方法

systemctl daemon-reload 
systemctl restart docker

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
网络优化

vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
service network restart
systemctl restart docker

在这里插入图片描述
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐