• Docker(一) ----初始Docker



    前言

    本文章主要是学习了黑马的Docker 课程的随记


    一、什么是 Docker

    1.1 Docker 的定义

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

    平常开发中大项目依赖组件较多,运行环境较为复杂,部署时会碰到一些问题

    • 依赖关系复杂,容易出现兼容性问题
    • 开发,测试,生产环境有差异

    请添加图片描述

    1.2 Docker对于上述问题的解决

    依赖兼容性问题:

    • 将应用的 Libs(函数库), Deps(依赖),配置与应用一起打包

    • 将每个应用放到一个隔离的容器去运行,避免互相干扰
      请添加图片描述
      不同环境的操作系统不同,Docker 又是如何解决的呢?这时候我们需要了解一下操作系统的基本结构:
      请添加图片描述

    • 内核与硬件交互,提供操作硬件指令

    • 系统应用封装内核指令为函数,便于程序员调用

    • 用户程序基于函数库实现功能

    不同系统环境问题

    请添加图片描述

    上面内容可概括为如下

    Docker 如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?

    • Docker 允许开发中将应用,依赖,函数库,配置一起打包,形成可移植镜像
    • Docker 应用运行在容器中,使用沙箱机制,相互隔离

    Docker 如何解决开发,测试,生产环境差异的问题

    • Docker 镜像中包含完整运行环境,包括函数库,仅依赖 Linux 内核,因此可以在任意 Linux 操作系统上运行

    Docker 是一个快速交付应用,运行应用的技术:

    1. 可以将程序及其依赖,运行环境一起打包为一个镜像,可以迁移到任意 Linux 操作系统
    2. 运行时利用沙箱机制形成隔离容器,各个应用互不干扰
    3. 启动,移除都可以通过一行命令完成,方便快捷

    二、Docker 与虚拟机

    请添加图片描述

    Docker 和虚拟机的差异

    • docker 是一个系统进程;虚拟机是在操作系统中运行的操作系统
    • docker 体积小,启动速度快,性能好;虚拟机体积大,启动速度慢
      请添加图片描述

    三、Docker 架构

    在了解 Docker 架构前,我们先来看几个基本概念。

    3.1 镜像和容器

    镜像(Image): Docker 将应用程序及其所需要的依赖,函数库,环境,配置文件打包在一起,称为镜像。

    容器 (Container): 镜像中的应用程序运行后形成的进程就是容器,只是 Docker 会给容器做隔离,对外不可见。
    请添加图片描述

    3.2 Docker 和 Docker Hub

    • DockerHub: DockerHub 是一个 Docker 镜像的托管平台,这样的平台称为 Docker Registry。官方地址为: https://hub.docker.com/
    • 国内也有类似于 DockerHub 的公共服务,比如网易云镜像服务,阿里云镜像库等。请添加图片描述

    3.3 Docker 架构

    Docker 是一个 CS 架构程序,由两部分组成:

    • 服务端 (server): Docker 守护进程,负者处理 Docker 指令,管理镜像,容器等
    • 客户端 (client): 通过命令或 RestAPI 向 Docker 服务发送指令。可以在本地或远程向服务端发送指令
      请添加图片描述

    小结

    镜像:将应用程序及依赖,环境,配置打包在一起
    容器:镜像运行起来就是容器,一个镜像可以运行多个容器
    Dokcer 结构:

    • 服务端:接收命令或远程请求,操作镜像或容器
    • 客户端:发送命令或者请求到 Docker 服务端

    DockerHub: 一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为 DockerRegistry

    四、安装Docker

    Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。

    Docker CE 分为 stable testnightly 三个更新频道。

    官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。

    4.1 卸载 (可选)

    Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker

    如果之前安装过旧版本的Docker,可以使用下面命令卸载:(这里的 \ 代表换行)

    yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-selinux \
                      docker-engine-selinux \
                      docker-engine \
                      docker-ce
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4.2 安装Docker

    首先需要大家虚拟机联网,安装yum工具

    yum install -y yum-utils \
               device-mapper-persistent-data \
               lvm2 --skip-broken
    
    • 1
    • 2
    • 3

    然后更新本地镜像源

    # 设置docker镜像源
    yum-config-manager \
        --add-repo \
        https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
        
    sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
    
    yum makecache fast
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    然后输入命令:

    yum install -y docker-ce
    
    • 1

    docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

    4.3 启动 Docker

    Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

    # 关闭
    systemctl stop firewalld
    # 禁止开机启动防火墙
    systemctl disable firewalld
    
    • 1
    • 2
    • 3
    • 4

    通过命令启动 docker

    systemctl start docker  # 启动docker服务
    
    systemctl stop docker  # 停止docker服务
    
    systemctl restart docker  # 重启docker服务
    
    • 1
    • 2
    • 3
    • 4
    • 5

    然后输入命令,可以查看 docker 版本:

    docker -v
    
    • 1

    在这里插入图片描述

    4.4 配置镜像加速

    docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

    参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
    在这里插入图片描述

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://erkkyc68.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    总结

    以上是对 Docker 的初始全部讲解。希望你能了解Docker 的基本定义,为啥使用 Docker, Docker 的架构以及如何安装Docker。有任何疑问可在评论区探讨。

  • 相关阅读:
    SAP 异常现象之同一个IDoc可以被POST两次触发2张不同的物料凭证
    【uni-app + uView】CountryCodePicker 国家区号组件
    IT项目管理的“金科玉律”是否可信
    【mq】从零开始实现 mq-03-引入 broker 中间人
    【C++】C++11——可变参数模板和emplace
    mysql中的锁
    【Web3 系列开发教程——创建你的第一个 NFT(6)】为 NFT 设置价格
    全网最详细的Neo4j安装教程
    TRex学习之旅八
    Java项目:springBoot+Mysql实现的校园二手在线交易平台系统
  • 原文地址:https://blog.csdn.net/TheWindOfSon/article/details/128194670