• Docker学习Ⅰ


    Docker概述

    Docker为什么出现?

    开发 -- 上线 必须解决的问题:应用环境 应用配置

    开发 -- 运维 喜闻乐见的一句话: 我在我的电脑上可以运行 !

    环境配置十分麻烦,每一个机器都要部署环境(redis集群,es,Hadoop...)费时费力
    
    项目+环境打包发送给运维
    
    Docker提出了解决方案:
    jar(环境) -- 打包项目带上环境(镜像) -- Docker仓库:商店 -- 从商店下载镜像 -- 直接运行
    

    Docker的思想就来自集装箱 !

    隔离: Docker核心思想, 打包装箱, 每个箱子都是互相隔离的

    Docker通过隔离机制, 可以将服务器利用到极致

    Docker的历史

    2010年, 几个搞 it 的年轻人, 在美国成立了一家公司 dotCloud...
    做一些pass的云计算服务, LXC有关的容器技术...
    他们将自己的技术(容器化技术), 命名Docker, 刚开始没有引起行业的注意...
    随后他们选择了开源这条路 !
    开放源代码, 立即引起了大量的注意 !
    2014年4月9日, Docker 1.0发布...
    

    VM和Docker的简单对比

    VM, linux centos原生镜像(一台电脑)	隔离,需要开启多个虚拟机    几个G	  几分钟
    docker, 隔离, 镜像(最核心的环境 4m+jdk+mysql) 十分小巧,运行镜像即可	  几M   秒级
    

    Docker相关资源

    官网地址: https://www.docker.com/

    文档地址: https://docs.docker.com/

    仓库地址: https://hub.docker.com/

    Docker能干嘛?

    • 之前的虚拟机技术

    缺点:
    1.资源占用多
    2.冗余
    3.启动很慢
    
    • 容器化技术

    容器化技术不是模拟一个完整的操作系统

    比较:
    1.传统虚拟机,虚拟一套硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
    2.容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以轻便
    3.每个容器间相互隔离,每个容器都有自己的文件系统,互不影响
    

    DevOps (开发 运维)

    应用更快速的交付和部署

    传统: 一堆帮助文档, 安装程序

    Docker: 打包镜像发布测试, 一键运行

    更便捷的升级和扩缩容

    使用Docker之后, 我们部署应用就和搭积木一样!

    (项目+环境) 包整体升级

    更简单的系统运维

    在容器化之后, 我们的开发和测试环境都是高度一致的

    更高效的计算资源利用

    Docker是内核级别的虚拟化, 可以在一个物理机上运行多个容器实例, 服务器的性能利用到极致

    Docker安装

    Docker的基本组成

    镜像 ( image )

    Docker 镜像就好比是一个模板, 可以通过这个模板来创建容器服务, redis镜像 ==> run ==> redis01(具体的容器, 提供服务)
    
    通过这个镜像可以创建多个容器 (最终服务运行或项目运行就是在容器中进行的)
    

    容器 ( container )

    Docker 利用容器技术, 独立运行一个或一组应用, 通过镜像来创建
    
    启动	停止	删除	基本命令
    
    目前, 可以把容器理解为一个简易的linux系统
    

    仓库 ( repository )

    仓库就是存放镜像的地方
    仓库分为公私有
    
    Docker Hub ( 默认国外的 )
    阿里云...都有容器服务器 ( 配置镜像加速 )
    

    安装Docker

    环境准备

    • linux基础
    • CentOS 7
    • 使用 Xshell

    环境查看

    # 系统内核是3.10以上的
    [root@su01 ~]# uname -r
    3.10.0-1062.18.1.el7.x86_64
    
    # 系统版本
    [root@su01 ~]# cat /etc/os-release 
    NAME="CentOS Linux"
    VERSION="7 (Core)"
    ID="centos"
    ID_LIKE="rhel fedora"
    VERSION_ID="7"
    PRETTY_NAME="CentOS Linux 7 (Core)"
    ANSI_COLOR="0;31"
    CPE_NAME="cpe:/o:centos:centos:7"
    HOME_URL="https://www.centos.org/"
    BUG_REPORT_URL="https://bugs.centos.org/"
    
    CENTOS_MANTISBT_PROJECT="CentOS-7"
    CENTOS_MANTISBT_PROJECT_VERSION="7"
    REDHAT_SUPPORT_PRODUCT="centos"
    REDHAT_SUPPORT_PRODUCT_VERSION="7"
    

    安装

    帮助文档:

    # 1.卸载旧的版本
    yum remove docker 
        docker-client 
        docker-client-latest 
        docker-common 
        docker-latest 
        docker-latest-logrotate 
        docker-logrotate 
        docker-engine
    
    # 2.需要的安装包
    $ sudo yum install -y yum-utils
    
    # 3.设置镜像的仓库
    yum-config-manager 
        --add-repo 
        http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
        # https://download.docker.com/linux/centos/docker-ce.repo  #默认是国外的,我们不用
    
    # 更新yum软件包索引
    yum makecache fast
    
    # 4.安装docker相关的  docker-ce 社区版	ee企业版
    yum install docker-ce docker-ce-cli containerd.io
    
    # 5.启动docker
    systemctl start docker
    
    # 6.查看是否安装成功
    docker version
    
    # 7.测试
    docker run hello-world
    
    # 8.查看下载的 hello-world 镜像
    [root@su01 ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              bf756fb1ae65        10 months ago       13.3kB
    
    
    • 了解:卸载docker
    # 卸载依赖
    yum remove docker-ce docker-ce-cli containerd.io
    # 删除资源
    rm -rf /var/lib/docker
    #  /var/lib/docker	docker的默认工作路径
    

    阿里云镜像加速

    1. 登录阿里云找到容器服务

    2. 找到镜像加速地址

    3. 配置使用

      sudo mkdir -p /etc/docker
      
      sudo tee /etc/docker/daemon.json <<-'EOF'
      {
        "registry-mirrors": ["https://idyzft7w.mirror.aliyuncs.com"]
      }
      EOF
      
      sudo systemctl daemon-reload
      
      sudo systemctl restart docker
      

    run hello-world的原理

    底层原理

    Docker是怎么工作的?

    Docker 是一个 Client-Server 结构的系统, Docker 的守护进程运行在宿主机上. 通过 Socket 从客户端访问

    DockerServer 接收到 Docker-Client 的指令, 就会执行这个命令

    Docker 为什么比 VM 快?

    1. Docker 有比虚拟机更少的抽象层

    2. docker 利用的是宿主机的内核 (操作系统), vm 需要的是 Guest OS

      所以说, 新建一个容器的时候, docker 不需要像虚拟机一样重复加载一个操作系统的内核.

  • 相关阅读:
    linux2.6.24.3下移植SD/MMC到S3C2440上的全历程
    设置装备布置了下双表示器
    Virtual Box 1.5.0 - 实用的“无缝窗口”
    oracle DB LINK 运用
    Linux下的tidy安置
    Linux效劳器装机安全疾速进阶指南(2)
    Linux下历程间通信
    Firefox 3 CSS Hack
    Linux下的搜刮东西find根基用法
    Linux效能器装机平安快速进阶指南(3)
  • 原文地址:https://www.cnblogs.com/straightup/p/13967361.html
Copyright © 2020-2023  润新知