首页 > 其他分享 >尚硅谷Docker实战教程学习笔记

尚硅谷Docker实战教程学习笔记

时间:2024-11-19 09:07:25浏览次数:1  
标签:容器 教程 硅谷 -- redis 镜像 docker Docker

尚硅谷Docker实战教程学习笔记

我从没想过因为即将要学习dockerfile而激动,也因这激动而顿感羞愧。————20241029

目录

写在前面

1. Docker简介

  1. 是什么

    • 为什么会有docker出现

      系统平滑移植,容器虚拟化技术

      Docker的出现使得Docker得以打破过去「程序即应用」的观念。透过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。

      在这里插入图片描述

    • docker的理念

      在这里插入图片描述

    • Docker是基于Go语言实现的云开源项目

    • Docker的主要目标是:Build, Ship and Run Any App, Anywhere。也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP及其运行环境能够做到 一次镜像,处处运行

    • Docker解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术

  2. 容器与虚拟机比较

    1. 虚拟机(virtual machine)就是带环境安装的一种解决方案。

      • 缺点:资源占用多,冗余步骤多,启动慢
    2. 由于前面虚拟机存在缺点,Linux发展出了另一种虚拟化技术:Linux容器(Linux Containers,LXC)

      • Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性一致性

      • Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现为启动速度快,占用体积小。

      在这里插入图片描述

    3. 总结

      • 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整的操作系统,在该系统上再运行所需应用进程;
      • 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便;
      • 每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。
  3. 能干嘛

    1. 技术职级的变化:coder->programmer->software engineer->DevOps engineer

    2. 开发/运维(DevOps)新一代开发工程师

      • 一次构建、随处运行

        • 更快的应用交付和部署
        • 更便捷的升级和扩缩容
        • 更简单的系统运维
        • 更高效的计算资源利用
      • Docker的应用场景

        在这里插入图片描述

  4. 去哪儿下

2. Docker安装

  1. 前提说明

    1. Docker 并非是一个通用的容器工具,它依于已存在并运行的 Linux 内核环境。
    2. Docker 实质上是在已经运行的 Linux 下制造了个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。
    3. 因此
      Docker 必须部署在 Linux 内核的系统上,如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。
    4. 获取系统版本内核:uname -r
  2. docker的基本组成

    1. 镜像,image

      • Redis r1 = docker run 镜像类似鲸鱼背上的集装箱,就是一个容器实例
    2. 容器,container 实例

      • 上述的 r1、r2、r3...多个实例
      • 容器是用镜像创建的运行实例
      • 可以看作是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
    3. 仓库,repository 存放镜像的地方

      • Maven仓库:放各种jar包
      • Github仓库:放各种git项目
      • Docker Hub:放各种镜像模板
    4. 小总结:image文件可以看作是容器的模板,Docker根据image文件生成容器的实例。同一个image文件,可以生成多个同时运行的容器实例。

      在这里插入图片描述

      在这里插入图片描述

      • docker daemon:真正干活的,通过Socket连接从客户端访问,守护进程从客户端接收命令并管理运行在主机上的容器。
  3. docker平台架构

    • docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职

      在这里插入图片描述

    • Docker运行的基本流程:

      • 用户使用Docker Client与Docker Daemon建立通信,并发送请求给后者
      • Docker Daemon作为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来实现具体对容器进行的操作
  4. 安装步骤

    1. 确定版本
    2. 卸载旧版本
    3. yum安装gcc相关
      1. 能上外网(CentOS7)
      2. yum -y install gcc
      3. yum -y install gcc-c++
    4. 安装需要的软件包
      1. yum install -y yum-utils
      2. 配置docker库:yum-config-manager --add-repo https://xxx
      3. 推荐使用阿里云的加速:yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      4. 更新yum软件包索引:yum makecache fast
    5. 安装docker:yum install docker-ce docker-ce-cli containerd.io
    6. 启动docker:systemctl start docker
    7. HelloWorld:docker run hello-worlddocker version
      • 本地没有hello-world,则会从远程库拉下来运行
    8. 卸载:
      • systemctl stop docker
      • yum remove docker-ce docker-ce-cli containerd.io
      • rm -rf /var/lib/docker
      • rm -rf /var/lib/containerd
  5. 阿里云镜像加速

    1. 是什么:https://promotion.aliyun.com/ntms/act/kubernetes.html

    2. 注册账户,工具台,容器镜像服务,镜像工具,镜像加速器,获取加速器地址链接https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

      # 创建目录,将镜像配置反写回文件
      sudo mkdir -p /etc/docker
      sudo tee /etc/docker/daemon.json <<-'EOF'
      {
        "registry-mirrors": ["https://[你自己的].mirror.aliyuncs.com"]
      }
      EOF
      
      # 重启docker
      sudo systemctl daemon-reload
      sudo systemctl restart docker
      
  6. 测试运行hello-world

    • docker run hello-world

    • run到底干了什么

      在这里插入图片描述

  7. 底层原理:为什么Docker会比VM虚拟机要快

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

      由于docker不需要Hypervisor(虚拟机)实现硬件层面的虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上,docker将会在效率上有明显优势。

    • docker利用的是宿主机的内核,而不需要加载操作系统os内核

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

    在这里插入图片描述

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

3. Docker常用命令

  1. 帮助启动类命令

    • systemctl start docker:启动docker
    • systemctl stop docker:停止docker
    • systemctl restart docker:重启docker
    • systemctl status docker:查看docker状态
    • systemctl enable docker:开机启动docker
    • docker info:查看docker概要信息
    • docker --help:查看docker总体帮助文档
    • docker 具体命令 --help:查看docker命令帮助文档
  2. 镜像命令

    • docker images:列出本地主机上的镜像

      同一个仓库源可以有多个tag版本,代表这个仓库源的不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker将默认使用 ubuntu:latest 镜像。

      REPOSITORY:表示镜像的仓库源
      TAG:镜像的标签
      IMAGE ID:镜像ID
      CREATED:镜像创建时间
      SIZE:镜像大小
      

      OPTIONS说明:

      • -a:列出本地所有的镜像(含历史镜像层)
      • -q:;只显示镜像ID
    • docker search 镜像名:默认是从 hub.docker.com 上检索镜像列表,一般选第一个官方认证过的,比较靠谱

      OPTIONS说明:

      • --limit:只列出N个镜像,默认25个,例如docker search --limit 5 redis
    • docker pull 镜像名:下载镜像,docker pull 镜像名字[:TAG],没有tag就下载最新版

    • docker system df:查看镜像/容器/数据卷所占的空间

    • docker rmi [-f] 镜像名/镜像ID:[强制]删除镜像

      • 删除多个镜像:docker rmi -f id1 name2:tag2
      • 删除全部镜像:docker rmi -f $(docker images -qa)

    ❓ 谈谈docker虚悬镜像是什么?

    • 是什么:仓库名、标签都是的镜像,俗称虚悬镜像 dangling image

    标签:容器,教程,硅谷,--,redis,镜像,docker,Docker
    From: https://www.cnblogs.com/lyjun/p/18554202

相关文章

  • 运维系列:Docker学习笔记(3)-- 如何使用Dockerfile构建镜像
    Docker学习笔记(3)--如何使用Dockerfile构建镜像Docker学习笔记(3)--如何使用Dockerfile构建镜像1.Dockerfile的书写规则及指令使用方法(1)FROM(指定基础image)该指令有两种格式:(2)MAINTAINER(用来指定镜像创建者信息)格式:(3)RUN(安装软件用)该指令有两种格式:......
  • Mybatis Plus保姆级教程 (一学就会!!!)
    目录一、概述二、框架结构2.1框架剖析2.2基本使用2.2.1创建Mapper接口2.2.2测试三、常用注解[email protected]@TableField3.2.1exist3.2.2select3.2.3fill3.3@TableId3.3.1value3.3.2typeNONEINPUT​​​​​​​AUTOASSIGN_ID和ASSIGN_UUI......
  • 【Project 2024软件下载与安装教程-亲测好用】
    ‌Project2024的操作系统要求是Windows10及以上版本‌。这意味着用户需要在Windows10或更高版本的操作系统上安装和使用Project2024‌1。Project2024是由Microsoft开发的一款高效实用的项目管理工具,旨在帮助项目经理发展计划、为任务分配资源、跟踪进度、管理预算和分析工作......
  • Linux网络操作系统项目教程2
    项目1安装与配置Linux操作系统文中新建用户,目录,文件一律为mahaoran多建文件,用户,目录会说明任务1-1安装过程(简写)二、新建虚拟机打开虚拟机软件,选择“新建虚拟机”。在“新建虚拟机向导”中,选择“自定义”模式。选择虚拟机兼容性,一般选择默认即可。三、配置虚拟机硬件选择稍后安装操......
  • 【Visio 2024软件下载与安装教程-亲测好用】
    MicrosoftVisio2024专业版是一款专业的专业矢量绘图软件。Visio2024不但新增了许多功能,而且还优化了众多性能,比如用户界面优化、更多图形元素库、允许用户邀请其他人一起编辑和查看图表、过程自动化等等,其一系列的改动旨在给予用户们最直观、最便利的操作体验!操作系统‌:Visio......
  • docker部署postgres并配置远程访问
    要使用Docker部署PostgreSQL并配置远程访问,可以按照以下步骤进行:拉取PostgreSQL镜像:使用Docker命令拉取PostgreSQL的官方镜像。dockerpullpostgres创建并运行PostgreSQL容器:创建一个PostgreSQL容器,并设置环境变量、端口映射和数据卷。dockerrun-it--namepost......
  • odoo17 新增模块教程, 实战案例详细教程
    新增模块python3./odoo-binscaffoldgroup_send./addons会增加一个文件夹配置模块核心在于__manifest__.py#-*-coding:utf-8-*-{'name':"GroupSend",'summary':"Short(1phrase/line)summaryofthemodule'spurpose&qu......
  • 【Python + Jupyter】安装教程:
    【Python+Jupyter】安装教程:一、安装 Python安装Python没啥说的,傻瓜式点击默认选项即可:Python下载地址:https://www.python.org/downloads/windows/ (若访问不通畅,可尝试切网络,比如手机热点等)在下载页面找到 StableReleases,一定是StableReleases,不能是 Pre-releases,......
  • Docker Registry 镜像
    @Trance233'usestrict'consthub_host='registry-1.docker.io'constauth_url='https://auth.docker.io'constworkers_url='https://xxx.com'constPREFLIGHT_INIT={status:204,headers:newHeaders({......
  • STEP7 V5.6 安装教程(附安装包下载)
    STEP7V5.6是一款编程软件,主要用于西门子系列工控产品的编程、监控和参数设置,是SIMATIC工业软件的重要组成部分。它适用于西门子S7-300、S7-400、ET200等产品,具有多种版本,如STEP7Basic、STEP7和STEP7Professional等。STEP7的所有功能均有大量的在线帮助,用户可以使用鼠标打......