zoukankan      html  css  js  c++  java
  • Docker简介,安装,配置

    docker是什么

    Docker官网: https://www.docker.com/

    image-20210104104634435

    • Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

    • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

    • 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

    • Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

    docker架构原理

    image-20210104104957006

    Docker三要素,镜像,容器,仓库

    1.镜像

    Docker 镜像(Image)就是一个只读的模板,它可以是一个可运行软件(tomcat,mysql),也可以是一个系统(centos)。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。

    2.容器

    Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

    3.仓库

    仓库(Repository)是集中存放镜像文件的场所,类似GitHub存放项目代码一样,只不过Docker Hub是由来存镜像(image)的。仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag,类似版本号)。

    仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

    最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云 等。

    容器与镜像的关系类似于面向对象编程中的对象与类。

    Docker 面向对象
    容器 对象
    镜像

    docker有什么用

    • 简化环境搭建,提高开发生命周期效率

    • 大大简化运维工作量

    • 微服务利器

    docker容器与虚拟机的区别

    Docker是一种轻量级的虚拟化技术,比传统的虚拟机性能更好。

    下图是虚拟机的体系结构:

    image-20210104110636217

    • server - 表示真实电脑。
    • Host OS - 真实电脑的操作系统,例如:Windows,Linux
    • Hypervisor - 虚拟机平台,模拟硬件,如VMWare,VirtualBox
    • Guest OS - 虚拟机平台上安装的操作系统,例如CentOS Linux
    • App - 虚拟机操作系统上的应用,例如nginx

    下图是Docker的体系结构:

    image-20210104110713177

    • server - 表示真实电脑。
    • Host OS - 真实电脑的操作系统,例如:Windows,Linux
    • Docker Engine - 新一代虚拟化技术,不需要包含单独的操作系统。
    • App - 所有的应用程序现在都作为Docker容器运行。

    这种体系结构的明显优势是,不需要为虚拟机操作系统提供硬件模拟。所有应用程序都作为Docker容器工作,性能更好。

    Docker容器 虚拟机(VM)
    操作系统 与宿主机共享OS 宿主机OS上运行宿主机OS
    存储大小 镜像小,便于存储与传输 镜像庞大(vmdk等)
    运行性能 几乎无额外性能损失 操作系统额外的cpu、内存消耗
    移植性 轻便、灵活、适用于Linux 笨重、与虚拟化技术耦合度高
    硬件亲和性 面向软件开发者 面向硬件运维者

    Docker优点:轻量级,速度快,运行应用隔离,方便维护...

    docker版本介绍

    • Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。

    • 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。

    • 社区版按照stable和edge两种方式发布,每个季度更新stable版本,如17.06,17.09;每个月份更新edge版本,如17.09,17.10。

    我们平时用社区版就足够了。所以我们安装社区版;

    docker 安装官方文档

    我们主要参考:https://docs.docker.com/install/linux/docker-ce/centos/ 来安装;

    docker CentOS-7安装步骤

    工具准备

    安装参考:https://www.runoob.com/w3cnote/vmware-install-centos7.html

    这里选择centos7

    阿里云下载地址:https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/

    各个版本iso镜像文件说明:

    1. CentOS-7-x86_64-DVD-2009.iso 标准安装版
    2. CentOS-7-x86_64-Everything-2009.iso 完整版,集成所有软件
    3. CentOS-7-x86_64-Minimal-2009.iso 精简版,自带的软件最少(没有gnome桌面)
    4. CentOS-7-x86_64-NetInstall-2009.iso 网络安装版

    我们选个精简版就可以了

    基础环境

    用ssh工具连接上系统后,要做几件事

    • 检查网络是否正常
    ping www.baidu.com
    

    检测即可,不正常的话,自己排查下

    • 切换到root用户

    输入下面的命令

    su
    
    • Docker 对 CentOS 系统的内核版本要求

    Docker 要求 CentOS 系统的内核版本高于 3.10

    通过 uname -r 命令查看你当前的内核版本

    例:

    [root@localhost makalo]# uname -r
    3.10.0-1160.el7.x86_64
    
    • 将yum包更新到最新
    yum update
    
    • 卸载旧版本docker(如果安装过旧版本的话)

    如果安装过旧版本可以用此命令,卸载

    yum remove docker docker-common docker-selinux docker-engine
    

    安装依赖

    安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

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

    设置yum源

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

    安装最新版本的Docker

    yum install docker-ce docker-ce-cli containerd.io
    

    启动Docker并设置开机启动

    #启动
    systemctl start docker
    #设置开机启动
    systemctl enable docker
    

    验证docker是否安装成功

    执行下面命令,出现下图表示安装成功

    docker version
    

    image-20210104154731682

    Docker HelloWorld测试

    执行

    docker run hello-world
    

    执行结果如图

    image-20210104155154291

    因为本地没有这个镜像,所以从远程官方仓库去拉取,下载

    现在已经下载好了,再执行一次

    docker run hello-world
    

    image-20210104155332080

    ok,HelloWorld运行完毕

    Docker HelloWorld运行原理

    运行 docker run hello-world

    本地仓库未能找到该镜像,然后去远程仓库寻找以及下载该镜像;

    然后我们再执行该命令

    出来了 Hellowold。我们具体来分析下 执行原理和过程;

    image-20210104104957006

    从左到右 client客户端,Docker运行主机,远程仓库;

    docker build ,pull,run分别是 构建,拉取,运行命令,

    中间Docker主机里有 Docker daemon主运行线程,以及Containers容器,容器里可以运行很多实例,(实例是从右侧Images镜像实例化出来的)Images是存储再本地的镜像文件,比如 Redis,Tomat这些镜像文件;

    右侧是Registry镜像仓库,默认远程镜像仓库 https://hub.docker.com/ 不过是国外主机,下载很慢,不稳定,所以我们后面要配置成阿里云仓库镜像地址,稳定快捷;

    执行 docker run hello-world的过程看如下图例:

    image-20210104160005297

    docker 配置阿里云镜像

    Docker默认远程仓库是 https://hub.docker.com/

    比如我们下载一个大点的东西,龟速

    由于是国外主机,经常延迟,破损;

    所以我们一般都是配置国内镜像,比如阿里云,网易云等;推荐阿里云,稳定点

    获取镜像地址

    登录进入阿里云镜像服务中心,获取镜像地址

    进入阿里云容器镜像服务地址:点这里快速进入

    使用你的淘宝或支付宝账号登录

    image-20210104161521730

    设置镜像地址

    在/etc/docker目录下找到在daemon.json文件(没有就新建),将下面内容写入

    registry-mirrors对应的地址就是第一步获取的地址

    {
     "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
    }
    

    重启daemon

    systemctl daemon-reload
    

    重启docker服务

    systemctl restart docker
    

    查看镜像地址是否修改成功

    输入

    docker info
    

    如下图表示修改成功

    image-20210104164306399

  • 相关阅读:
    003 python接口 cookies
    RocketDock 安装
    001 python接口 get请求
    mysql创建远程登陆用户并授权
    php时间函数
    ThinkPHP5高阶实战教程
    unset与unlink
    include 和require的区别
    80端口被system 占用
    【纪中受难记】——C2Day4:水题大赏
  • 原文地址:https://www.cnblogs.com/makalochen/p/14230753.html
Copyright © 2011-2022 走看看