doctor技术基础

本文详细介绍了Docker的基础知识,包括容器与虚拟化的区别、Docker的三大核心概念(镜像、容器、仓库)、Docker的使用场景、Docker引擎的工作原理和名称空间技术。此外,还讲解了Docker的部署过程,提供了丰富的Docker命令示例,如查询版本、镜像和容器操作,以及如何进行容器的创建、启动和停止等。
摘要由CSDN通过智能技术生成

一、容器和虚拟化区别:

1、结构上的区别

KVM全虚:,由kvm组件做虚拟化资源,vmm为抽象层以软件形式,由QUMU调用内核供给虚拟机,或者叫寄居型
在这里插入图片描述
EXSI半虚,完整性架构在裸金属上的,可以直接利用内核物理性能,
在这里插入图片描述
容器
在这里插入图片描述

2、特性上的区别

在这里插入图片描述
vm需要模拟出来宾操作系统,

不同点 container VM
启动速度 秒级 分钟级
运行性能 接近原生(直接在内核中运行) 50%左右损失
磁盘占用 MB GB
可运行数量 成百上千 一般几十台
隔离性 进程级别 系统级别(更彻底)
操作系统 主要支持Linux 几乎所有
封装程度 只打包项目代码和依赖关系,共享宿主机内核 完整的操作系统,与宿主机隔离
环境搭建 可以在创建镜像前搭建 只能在平台后搭建

二、Docker的三个概念

镜像(Image):类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。
容器(Container):类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境(包括root权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。Docker引擎利用容器来运行、隔离各个应用。容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。注意:镜像本身是只读的,容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身不变。
仓库(Repository):类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用tag进行区分,比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。
docker 镜像
docker hub 公共仓库
docker-harbor 上传下载方便、安全 私有仓库

github: github ——》404——》延迟gitlab:
svn
gitee
码云 代码仓库
语雀

使用docker有什么意义(优势)
docker引擎统一了基础设施环境-docker容器环境(引擎)
docker引擎统一了程序打包(装箱)方式docker 镜像
docker引擎统一了程序部署(运行时环境)方式-docker 容器

三、Docker的使用场景

打包应用程序简单部署
可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦),例如:服务器从腾讯云迁移到阿里云

持续集成和持续交付(CI/CD) :开发到测试发布
部署微服务
提供 PAAS 产品(平台即服务){OpenStack的云主机类似于阿里云的ECS,属于IAAS、Docker (K8S)属于PAAS}

lAAS:基础设施即服务 基础设施就是裸金属
PAAS:平台即服务 例如nginx
SAAS :应用即服务 例如lnmp

四、Docker 引擎(Docker Engine)

Docker Engine是具有以下主要组件的客户端-服务器应用程序:
服务器是一种长期运行的程序,称为守护程序进程( dockerd命令REST API,它指定程序可用来与守护程序进程进行通信并指示其操作的接口。
命令行界面(CLI)客户端(docker命令)。
在这里插入图片描述
客户端传入docker指令/命令—》通过restAPI—》进入内核中的docker-server端—》由server端进行处理
—》通过rest API返回给docker-client端进行展示

客户端作用
1用于使用命令传入方式与restapi对接
2展示docker-server返回结果

五、原理

在这里插入图片描述
1命令传入
2本地查找
3如果没有就去registry上去下载
4镜像拉过来后给容器

六、名称空间(Namespaces)

底层原理就是cgroup和namespaces。
Docker使用一种称为namespaces提供容器的隔离工作区的技术。运行容器时,Docker会为该容器创建一组名称空间。
这些名称空间提供了一层隔离。容器的每个方面都在单独的名称空间中运行,并且其访问仅限于该名称空间。
Docker Engine在 Linux上使用以下名称空间:该pid命名空间:进程隔离(PID:进程ID)。
容器隔离了6个名称空间(namespace资源隔离-用容器化技术封装)
mount文件系统,挂载点—》》一个文件系统内,不能重复挂载一个指定目录,例如:/mnt
user操作进程的用户和用户组
pid进程隔离
uts主机名和主机域以及内核
ipc信号量、消息队列,共享内存(理解,不同的应用调用内存资源的时候应该使用不同的内存空间)
net网络设备、网络协议栈、端口等

小结: Dcoker是基于容器技术的轻量级虚拟化解决方案
docker是容器技术,把linux的cgroup、namespaces等容器底层技术进行完美的封装、并抽象为用户提供创建和管理容器的便捷界面(命令行cli、api等) c/s

七、部署docker

先设置环境

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0

安装依赖包

[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

设置阿里云源

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror, langpacks
adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo

[root@localhost yum.repos.d]# cat docker-ce.repo 

在这里插入图片描述
这里根据需要开启各个源进行安装
安装docker-ce社区版

[root@localhost ~]# yum install -y docker-ce

安装完毕后在ETC下是没有docker文件夹得
在这里插入图片描述
添加镜像加速器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值