Docker安装

下载地址

  • 官网:http://www.docker.com
  • 仓库:https://hub.docker.com/

安装前提

  • 系统64位,linux系统内核版本为3.8以上
  • 查看系统内核:uname -r #-r print the kernel release
            cat /etc/redhat-release

Docker的基本组成

  • 镜像

 

Docker镜像image就是一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建很多容器
相当于一个root文件系统。比如官方镜像centos7就包含了一套centos7最小系统的root文件系统
相当于容器的源代码,docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象

 

  • 容器
#从面向对象角度
容器是用镜像创建的运行实例,像Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。
每个容器都是相互隔离的、保证安全的平台
#从镜像角度
可把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间)和运行在其中的应用程序
  • 仓库
是集中存放镜像文件的场所,可以把镜像发布到仓库中,也可以从仓库中下载过来。类似于Maven仓库,存放各种jar包
仓库分为公开仓库和私有仓库,最大的公开仓库是Docker Hub(https://hub.docker.com/),国内的公开仓库包括阿里云、网易云等

  总结:Docker本身是一个容器运行载体或称之为管理引擎

Docker平台架构概述

  • Docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职
  • 基本流程为

 

用户使用Docker Client与Docker Daemon建立通信,并发送请求给后者
Docker Dameon作为Docker架构中的主体部分,首先提供Docker Server的功能使其可以接受Docker Client的请求
Docker Engine执行Docker内部的一系列工作,每一项工作都是以一个job形式存在 
Job在运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver将下载镜像以Graph的形式存储
当需要为Docker创建网络环境时,通过网络管理驱动Network driver创建并配置Docker容器网络环境
当需限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成
Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作

 

 

 

 

安装步骤

 

#卸载旧版本
yum remove docker \
	  docker-client \
	  docker-client-latest \
	  docker-common \
	  docker-latest \
	  docker-latest-logrotate \
	  docker-logrotate \
	  docker-engine
#安装gcc相关
yum -y install gcc
yum -y install gcc-c++
#设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  #推荐此种方式 官网方式会导致超时
#更新yum软件包索引
yum makecache fast
#安装DOCKER CE
yum -y install docker-ce docker-ce-cli containerd.io
#启动docker
systemctl start docker
#测试
docker version
docker run hello-world
#卸载
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

 

  

 

阿里云镜像加速

  • 登陆阿里云开发者平台

 

 

  • 点击控制台

 

  • 选择容器镜像服务

 

 

 

 

  • 获取加速器地址

 

  • 粘贴脚本直接执行

 

  • 重启服务
systemctl daemon-reload
systemctl restart docker

RUN干了什么

 

为什么docker会比vm虚拟更快

  • docker有着比虚拟机更少的抽象层

 

由于docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在CPU、内存利用率上docker将会在效率上有明显优势
  • docker利用的是宿主机的内核,而不需要加载操作系统OS内核

 

当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核,进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的,而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟

  

 

posted @ 2022-12-07 00:16  smatterer  阅读(45)  评论(0)    收藏  举报