Docker简介与安装

什么是docker

      docker是一个应用容器引擎,是dotcloud公司开发的一种轻量级的虚拟化方案。

docker出现的背景

      通常的,在公司中,不同职能的部门在交互半成品产品时,如开发与测试,测试与上线之间,由于操作系统(环境)的差异,回导致各种由于环境差异导致的问题,而docker能将运行环境和数据打包成镜像,并且能够运行任何镜像。

docker内部技术

  • namespace:inux提供的内核级别的环境(运行空间)隔离方法,即进程之间,进程与子进程之间的隔离。但是物理资源还是共享的。
  • Cgroup:linux提供的控制物理资源的分配(内存,cpu,磁盘空间等)的方法。
  • linux container:linux提供的容器(虚拟化)技术,结合了上面两种技术,但他只是一种轻量级的容器技术,仅能对部分资源进行限制。(相比之下docker有更全面的资源限制能力)

以上是linux提供的技术


以下是docker使用的技术

  • chroot:改变程序执行访问的根目录的位置,增加系统的安全性,限制使用者权限。
  • veth:在虚拟机上桥接出一个新的网卡,与主机和外网通信。
  • unionFS:联合文件系统,基于该技术“copy on write”(写时复制)的特点实现docker秒级启动和占用极少资源的特点。
  • TC:用来做流量隔离,限制带宽。
  • iptabls/netfilters:两个技术个ingtong实现容器的网络访问策略。
  • quota:限制磁盘读写空间的大小。
  • setrlimit:用来限制container中的进程和文件最大 打开数。

docker基本概念

在这里插入图片描述

  • 引擎:创建和管理容器的工具,从仓库种拉取镜像,上传镜像。
  • 镜像:创建容器的模版。
  • 容器:一个简单的操作系统以及在其中运行的应用。
  • 仓库:存放镜像。(目前最大的公共仓库是官方提供的Docker Hub)

docker与传统虚拟化的区别

在这里插入图片描述
不同于传统虚拟化,docker摆脱了对hypervisor(虚拟机管理程序)的依赖,直接与内核交互,几乎没有性能损耗,发挥裸机的全部性能。

docker4种基础镜像

在这里插入图片描述
在这4种基础镜像的基础上,开发出各种镜像,提交到仓库中。

  • BusyBox:一个极简版的Linux系统,集成了100多种常用Linux命令,大小不到2MB,适用于简单测试场景。
  • Alpine:一个面向安全的轻型Linux发行版系统,比BusyBox功能更完善,大小不到5MB,包含了足够的基础功能并且体积较小,在生产环境中最常用。
  • Debian/centos: Debian 系列操作系统,功能完善,更新快,大小约170MB,适合研发环境。
  • CentOS/Fedora:都是基于Redhat的Linux发行版,企业级服务器常用操作系统,稳定性高,大小约200MB,适合生产环境使用。

docker平滑升级

只需要更换底层镜像,策略会自动地让新的进程进入新的容器,就的进只需要更换底层镜像,策略会自动地让新的进程进入新的容器,就的进程在旧的容器中照常执行完成后结束。程在旧的容器中照常执行完成后结束。

docker使用场景

  • 作为轻量级的虚拟机使用。
  • 作为云主机使用:结合Kubernetes容器管理平台,动态分配服务器的资源。
  • 应用服务打包:可以把java运行环境,tomcat服务器打包成镜像后再做一些修改,构成新的镜像,方便后期的升级和版本控制。
  • 容器云平台。
  • 支持CI/CD.
  • 解决微服务实施的难题:利用Docker容器的环境隔离能力,让微服务运行在容器内,就能够解决由于为服务基于操作系统,而导致的资源浪费。
  • 执行临时任务:创建环境,释放资源都很方便。

docker镜像分层

      在4种基础镜像的基础上,开发出了docker hub仓库中的许多镜像,在docker中,镜像的开发基于分层的结构,也就是说,在镜像的基础上,开发出新的环境,导出成新的镜像以供后续使用。

  • 镜像分层的优点:
          镜像分层可以实现下层镜像的共享。
  • 写时复制(copy on write):
          在宿主机的镜像上启动docker后,在容器中的操作都是在容器上的一个可写层(容器层)上,所有操作会被差异备份到宿主机的相关目录下,不影响下层的镜像。容器关闭后,可写层被删除,所有的操作都失效。

文件操作

操作说明
修改文件从上(容器层)到下(底层镜像)查找要操作的文件,找到后复制到容器层,进行修改操作。
查找文件从上到下查找要操作的文件,找到后复制到容器层。
删除文件容器查找到文件后,将删除的操作记录在容器层中,仅仅是保存记录。
创建文件被创建的新文件被添加到容器层
  • 镜像信息被保存在 /var/lib/docker/overlay2/【镜像编号】/diff
  • 在镜像上创建的容器的操作信息被保存在 /var/lib/docker/overlay2/【镜像编号】-init/diff中。(注意操作前后多处来的目录)

docker持久化存储

      不想让容器关闭后,所有的操作都失效,就要想办法实现容器的持久化存储,有两个方法:

  • 本地存储:将容器中创建的镜像存储到宿主机对应目录下。
  • 网络存储:把多台宿主机的磁盘目录通过网络联合为共享存储,然后把共享存储中的特定目录映射给特定的容器。
  • 导出成新的镜像。

安装docker

[root@yiki ~] yum -y install yum-utils device-mapper-persistent-data lvm2 #安装必要工具
[root@yiki ~] yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
# 添加软件源,此微恶最新版本,若有版本需求则访问官网
[root@yiki ~] yum makecache fast
[root@yiki ~] yum -y install docker-ce  #安装社区版
[root@yiki ~] systemctl start docker  #启动
[root@yiki ~] docker version #查看版本
*可以根据需要,修改仓库中的enable值来决定下载那个版本的docker。
  • 启动第一个容器,来判断docker是否正确安装完毕。
[root@yiki ~] docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
*出现这样的结果说明成功启动了一个容器。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值