Docker学习笔记---day001

Docker学习笔记---day001

文章目录

1、Docker基本概念

1.1、问题1:为什么会有Docker的出现呢?

由于开发 环境和测试 环境可能存在版本差异配置不一致,导致代码无法正常运行。

解决方案:采用Docker容器化部署完整复制原始运行环境。(完成系统的平滑移植、容器虚拟化技术)

Docker的出现打破了过去的"程序即应用 "的观念。通过镜像 (Images)将作业系统核心除外,运行应用程序所需要的系统环境,由上而下打包,达到应用程序跨平台间的无缝接轨运作

例如:我们可以将其想象为VM创建虚拟机的过程

1.2、Docker概念(go语言)

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

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

1.3、容器和虚拟机技术

  • 传统虚拟机技术 :基于安装在 操作系统上的虚拟机管理系统(VM),创建虚拟机(虚拟出各种硬件),在虚拟机上安装 操作系统(Centos 7 ),在从操作系统中部署相关应用 (Jar包)。
    缺点: 资源占用多、冗余步骤多、启动慢
    例如:有Mysql、Redis、MongoDB分别在三台不同的Centos7中,此时会造成资源浪费,其实三个环境完全可以复用一台Centos 7 。
  • 容器虚拟化技术(LXC) :是与系统其它部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。

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

1.4、Docker和虚拟机的不同之处

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

1.5、Docker的优点

  • 一次构建、随处运行:
    更快速的应用交付和部署、更便捷的升级和扩缩容、更简单的系统运维、更高效的计算资源利用。
  • 应用场景
    Docker借鉴了集装箱的概念。将标准的集装箱运往各地,Docker将这个模式运用到自己的设计中,唯一不同的:Docker运输的是软件,集装箱是货物。

2、Docker的下载安装

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

Docker Hub官网(安装Docker镜像的仓库):https://hub.docker.com/

Docker并非是一个通用的容器,它依赖于已存在并运行的Linux内核环境。

Docker的三件套:镜像 (Image)、容器 (Container)、仓库 (Repository)

Docker镜像(Image)就是一个只读 的模版。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。

相当于容器的"源代码",docker镜像文件类似于Java的类模版,而Docker容器实例类似于Java中new出来的实例对象

Docker 面向对象
容器 对象
镜像

2.1、镜像

  • 面向对象 的角度
    Docker 利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台
  • 镜像 的角度
    对象**的角度
    Docker 利用可以把容器看做是一个简易版的Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

2.2、容器

容器实例由两部分所组成:最小最核心的Linux内核文件像Redis、Mysql这样应用所组成

2.3、仓库

仓库(Repository)是集中存放镜像文件的场所

类似于

  • Maven仓库:存放各种jar包的地方
  • github仓库:存放各种git项目的地方
  • Docker Hub:存放各种镜像模版的地方。

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

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

注意:Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是一个Image镜像文件。只有通过这个镜像文件才能生成Docker容器实例(类似于Java中new出来一个对象)。

image文件可以看做是容器的模版。Docker根据image文件生成容器实例。同一个image文件,可以生成多个同事运行的容器实例。

  • 镜像文件:image文件生成的容器实例,本身也是一个文件,称为镜像文件。
  • 容器实例:一个容器运行一种服务,当我们需要的时候,就可以通过Docker客户端创建一个对应的运行实例,也就是我们的容器。
  • 仓库:就是放一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候再从仓库中拉下来就可以。

3、Docker图解与工作原理

3.1、图解操作

  • docker build:根据Dockerfile中的指令自动构建新的Docker镜像。
  • docker pull:从远程仓库拉取镜像并下载到本地仓库。
  • docker run:根据制定的镜像版本,创建并启动一个新的容器。

3.2、Docker的工作原理

Docker 是一个Cilent-Server 结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。容器,是一个运行时环境。

相关推荐
code bean2 小时前
【C#笔记】Newtonsoft.Json 中 `[JsonIgnore]` 的作用详解
笔记·c#·json
大志若愚YYZ2 小时前
嵌入式Linux学习——环境变量与配置文件的关系(⭐难理解)
linux·学习
DreamLife☼2 小时前
Docker-玩转 Docker 镜像:从拉取、构建到发布
docker·pull·镜像·commit·unionfs·分层·hun
love530love3 小时前
【笔记】xFormers版本与PyTorch、CUDA对应关系及正确安装方法详解
人工智能·pytorch·windows·笔记·python·深度学习·xformers
笨鸟笃行3 小时前
百日挑战——单词篇(第十九天)
学习
受之以蒙3 小时前
赋能 AI 与具身智能:Rust ndarray 构建安全高效的数据底座
人工智能·笔记·rust
和光同尘20233 小时前
使用Rancher快速部署K8S集群
docker·云原生·容器·kubernetes·centos·rancher·虚拟机
西京刀客3 小时前
Docker Desktop 替代方案之OrbStack、podman、Rancher Desktop
docker·rancher·podman·orbstack
JohnYan3 小时前
Bun技术评估 - 29 Docker集成
javascript·后端·docker