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

  • 相关阅读:
    多个类定义attr属性重复的问题:Attribute "xxx" has already been defined
    好用的批量改名工具——文件批量改名工具V2.0 绿色版
    得到ImageView中drawable显示的区域的计算方法
    得到view坐标的各种方法
    实现类似于QQ空间相册的点击图片放大,再点后缩小回原来位置
    Material Designer的低版本兼容实现(五)—— ActivityOptionsCompat
    Android 自带图标库 android.R.drawable
    解决 Attempting to destroy the window while drawing!
    解决Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 4
    Material Designer的低版本兼容实现(四)—— ToolBar
  • 原文地址:https://www.cnblogs.com/makalochen/p/14230753.html
Copyright © 2011-2022 走看看