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的基本组成

  • 镜像

 

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

 

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

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

Docker平台架构概述

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

 

1
2
3
4
5
6
7
用户使用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来实现具体对容器进行的操作

 

 

 

 

安装步骤

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#卸载旧版本
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

 

  

 

阿里云镜像加速

  • 登陆阿里云开发者平台

 

 

  • 点击控制台

 

  • 选择容器镜像服务

 

 

 

 

  • 获取加速器地址

 

  • 粘贴脚本直接执行

 

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

RUN干了什么

 

为什么docker会比vm虚拟更快

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

 

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

 

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

  

 

posted @   smatterer  阅读(20)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示