【Docker】Docker基本概念

Docker基本概念

  • 1.Docker概述
    • [1.1 Docker是什么?](#1.1 Docker是什么?)
    • [1.2 Docker的宗旨](#1.2 Docker的宗旨)
    • [1.3 容器的优点](#1.3 容器的优点)
    • [1.4 Docker与虚拟机的区别](#1.4 Docker与虚拟机的区别)
    • [1.5 容器在内核中支持的两种技术](#1.5 容器在内核中支持的两种技术)
    • [1.6 namespace的六大类型](#1.6 namespace的六大类型)
  • 2.Docker核心概念
    • [2.1 镜像](#2.1 镜像)
    • [2.2 容器](#2.2 容器)
    • [2.3 仓库](#2.3 仓库)
  • [3. 知识点总结](#3. 知识点总结)
    • [3.1 Docker是什么?](#3.1 Docker是什么?)
    • [3.2 容器和虚拟机的区别](#3.2 容器和虚拟机的区别)
    • [3.3 6种命名空间(Namesapce)](#3.3 6种命名空间(Namesapce))

1.Docker概述

1.1 Docker是什么?

  • 是一个开源的应用容器引擎,基于go语言开发并遵循apache2.0协议开源
  • 是在Linux容器里运行应用的开源工具
  • 是一种轻量级的 "虚拟机"
  • Docker的容器技术,可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器
  • Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱

鲸鱼可以看作宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序

1.2 Docker的宗旨

即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的== " 一次封装、到处运行 " 的目的==,这里的应用既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

1.3 容器的优点

  • 灵活:即使是最复杂的应用也可以集装箱化
  • 轻量级:容器利用并共享主机内核
  • 可互换:可以及时部署更新和升级
  • 便携式:可以在本地构建,部署到云,并在任何地方运行
  • 可扩展: 可以增加并自动分发容器副本
  • 可堆叠:可以垂直和即时堆叠服务
  • 容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
  • 虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

1.4 Docker与虚拟机的区别


1.5 容器在内核中支持的两种技术

Docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制 ,通过写时复制技术(copy-on-write)实现高效文件操作 (类似于虚拟机的磁盘,比如分配500g并不是实际占用物理磁盘500g,只有当需要修改时才复制一份数据)

1.6 namespace的六大类型

2.Docker核心概念

2.1 镜像

Docker的镜像是创建容器的基础,类似于虚拟机的快照,可以理解为一个面向docker引擎的只读模板.
通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包括代码、运行时间、库、环境变量和配置文件。
docker镜像也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统.因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境,这也是docker镜像的精髓。

2.2 容器

docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证平台的安全性。
可以把容器看作是一个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等) 和运行在其中的应用程序

2.3 仓库

Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到共有仓库(public)或者私有仓库(private), 当下次要在另一台机器上使用这个镜像时,只需从仓库获取.

Docker的镜像 、容器、日志等内容全部都默认存储在 /var/lib/docker

3. 知识点总结

3.1 Docker是什么?

sql 复制代码
docker是一个go语言开发的应用容器引擎,用来运行容器里的应用。docker是用来管理容器和镜像的一种工具。

容器引擎:docker containerd  podman  rocket

3.2 容器和虚拟机的区别

容器 虚拟机
所有容器共享宿主机的内核 每个虚拟机都有独立的操作系统和内核
使用namesapce隔离资源,使用cgroup限制资源的最大使用量 完全隔离,每个虚拟机都有独立的硬件资源
秒级启动速度 分钟级启动速度
容器相当于宿主机的进程,性能几乎没有损耗 需要hyervisor(虚拟机管理程序)对宿主机资源寻访问,至少有20%~50%资源损耗
单机容量能够支持成百上千个容器 单机容量只能支持最多几十个虚拟机

3.3 6种命名空间(Namesapce)

序号 命名空间类型 功能说明
No.1 MNT Namespace 提供磁盘挂载点和文件系统的隔离能力,使得每个进程只能看到自己的文件系统挂载点和文件系统层次结构。
No.2 IPC Namespace 提供进程间通信的隔离能力,:使得每个进程只能看到自己和同一命名空间中的进程的进程间通信(IPC)机制。
No.3 Net Namespace 提供网络隔离能力,使得每个进程只能看到自己的网络接口和路由表,从而实现网络隔离。
No.4 UTS Namespace 提供主机名隔离能力,使得每个进程只能看到自己的主机名和域名。
No.5 PID Namespace 提供进程隔离能力,使得每个进程只能看到自己及其子进程的进程树。
No.6 User Namespace 提供用户隔离能力,使得每个进程只能看到自己和同一命名空间中的进程的用户和用户组。
相关推荐
qhqh3103 分钟前
K8S的PV、PVC和storageClass的相关概念及实验
云原生·容器·kubernetes
孫治AllenSun7 分钟前
【Linux】配置服务自启动
linux·运维·服务器
春日见17 分钟前
端到端大模型自动驾驶
java·开发语言·驱动开发·docker·自动驾驶·计算机外设
摆烂z20 分钟前
minio文件迁移阿里云mc命令
阿里云·云计算
小生不才yz29 分钟前
【Makefile 专家之路 | 基础篇】03. 规矩方圆:书写规则详解(通配符、文件搜索与伪目标)
linux
Lueeee.1 小时前
Linux下的ULN2003驱动板与28BYJ-48步进电机驱动移植
linux·驱动开发
海特伟业1 小时前
隧道调频广播覆盖-隧道调频广播无线覆盖系统建设要点、难点分析与解决应对
运维·设计模式
中国IT1 小时前
第3章:Docker与传统虚拟化比较
运维·docker·容器
洛菡夕1 小时前
nginx核心功能
linux·nginx
九硕智慧建筑一体化厂家1 小时前
DDC:看似普通的存在,在楼宇自控系统中却主宰智能建筑高效运行?
大数据·运维·人工智能·网络协议·制造·设计规范