首页 > 其他分享 >docker-day1——docker介绍、docker安装

docker-day1——docker介绍、docker安装

时间:2023-04-11 19:22:19浏览次数:47  
标签:容器 虚拟化 day1 docker 安装 Docker 服务端 客户端

目录

一、docker介绍

1.1 什么是虚拟化

在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。

在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件 对资源充分利用

虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等。

常见的虚拟化技术

# kvm:开源的免费的  Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中
# exsi:vmware商用的,装在裸机上,可以虚拟化出很多机器
# openstack(python开发的,开源的):电信云,华为云 openstack  管理云平台
# 阿里云(自研,阿里飞天):云服务器,到一个网站,点点---》付款--》完成
# docker:容器技术
# k8s:多机容器管理,容器编排

1.2.1 docker是什么

Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护

Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。

Docker 项目的目标是实现【轻量级的操作系统虚拟化解决方案】。 Docker 的基础是 Linux 容器(LXC)等技术。

在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的【容器就像操作一个快速轻量级的虚拟机】一样简单。

在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。

Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。

为什么选择Docker?

(1)上手快。

用户只需要几分钟,就可以把自己的程序“Docker化”。Docker依赖于“写时复制”(-on-write)模型,使修改应用程序也非常迅速,可以说达到“随心所致,代码即改”的境界。

随后,就可以创建容器来运行应用程序了。大多数Docker容器只需要不到1秒中即可启动。由于去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机中也可以运行更多的容器,使用户尽可能的充分利用系统资源。

(2)职责的逻辑分类

 使用Docker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如何管理容器。Docker设计的目的就是要加强开发人员写代码的开发环境与应用程序要部署的生产环境一致性。从而降低那种“开发时一切正常,肯定是运维的问题(测试环境都是正常的,上线后出了问题就归结为肯定是运维的问题)”

(3)快速高效的开发生命周期

 Docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应用程序具备可移植性,易于构建,并易于协作。(通俗一点说,Docker就像一个盒子,里面可以装很多物件,如果需要这些物件的可以直接将该大盒子拿走,而不需要从该盒子中一件件的取。)

(4)鼓励使用面向服务的架构

 Docker还鼓励面向服务的体系结构和微服务架构。Docker推荐单个容器只运行一个应用程序或进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序或者服务都可以表示为一系列内部互联的容器,从而使分布式部署应用程序,扩展或调试应用程序都变得非常简单,同时也提高了程序的内省性。(当然,可以在一个容器中运行多个应用程序)

1.2.2 容器与虚拟机比较

下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。

image

与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。

1.2.3 Docker 的一些概念

1.2.3.1 Docker服务器与客户端

 Docker是一个客户端-服务器(C/S)架构程序。Docker客户端只需要向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。Docker提供了一个命令行工具Docker以及一整套RESTful  API。你可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。

image

1.2.3.2 Docker镜像与容器

镜像是构建Docker的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中的“构建”部分。镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来。例如:

添加一个文件;

执行一个命令;

打开一个窗口。

也可以将镜像当作容器的“源代码”。镜像体积很小,非常“便携”,易于分享、存储和更新。

 Docker可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打包放进容器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认为,镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。  容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务。

所以Docker容器就是:

一个镜像格式;

一些列标准操作;

一个执行环境。

Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件。

和集装箱一样,Docker在执行上述操作时,并不关心容器中到底装了什么,它不管是web服务器,还是数据库,或者是应用程序服务器什么的。所有的容器都按照相同的方式将内容“装载”进去。

Docker也不关心你要把容器运到何方:我们可以在自己的笔记本中构建容器,上传到Registry,然后下载到一个物理的或者虚拟的服务器来测试,在把容器部署到具体的主机中。像标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且尽量通用。

我们也可以用类和对象的概念,来类比,镜像是类---》生成多个对象。

1.2.3.3 Registry(注册中心)

 Docker用Registry来保存用户构建的镜像。Registry分为公共和私有两种。Docker公司运营公共的Registry叫做Docker Hub。用户可以在Docker Hub注册账号,分享并保存自己的镜像(说明:在Docker  Hub下载镜像巨慢,可以自己构建私有的Registry)。

https://hub.docker.com/

二、docker安装

Docker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu发布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的。在很多版本的CentOS中是不支持更新最新的一些补丁包的。

由于我们学习的环境都使用的是CentOS,因此这里我们将Docker安装到CentOS上。注意:这里建议安装在CentOS7.x以上的版本,在CentOS6.x的版本中,安装前需要安装其他很多的环境而且Docker很多补丁不支持更新。

请直接挂载课程配套的Centos7.x镜像

(1)yum 包更新到最新

# yum remove docker docker-common  docker-selinux docker-engine
# rm -rf /var/lib/docker

sudo yum update

(2)安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

image

(3)设置yum源为阿里云

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

image

(4)安装docker

sudo yum install docker-ce

image

(5)安装后查看docker版本

docker -v
# Docker version 23.0.3, build 3e7cbfd

image

windows系统

# win:下个软件,一路下一步即可(讲课,真正做练习,不要使用它)
	-https://www.docker.com/products/docker-desktop/
    -一路下一步

三、作业

1、tcp 三次握手和四次挥手

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。

image

1.三次握手建立连接的过程(白话版)

	第一次握手:客户端这边向服务端发送建立连接的请求(SYN seq = x)

	第二次握手:服务端接收请求并回应,回应的同时向客户端发送建立连接的请求(这里可以看成同时进行了两步,如果服务端同意建立连接,这时候就会建立起客户端发送数据到服务端的数据传输通道,之后的服务端向客户端发送建立连接的请求是为了建立服务端返回数据到客户端的数据传输通道。SYN seq = y,ACK = x + 1)

	第三次握手:客户端向服务端进行回应(ACK = y + 1)这时就建立起了两者的双向数据传输通道

image

1.四次挥手断开连接的过程(白话版)

	第一次挥手:当客户端没有信息需要发送给服务端的时候,客户端会发送断开连接的请求(SYN seq = x+2)

	第二次挥手:这时服务端会回应客户端,确认断开客户端传输信息给服务端的数据传输通道(ACK=x+3)

	TIME_WAIT状态:当断开客户端传输数据到服务端的数据传输通道后,服务端需要先确认是否还有消息需要发送给客户端,发送完毕、确认无误后才会继续后续操作断开连接

	第三次挥手:服务端向客户端发送断开通道连接的请求(seq = y + 1)

	第四次挥手:客户端向服务端发送回应然后断开服务端跟客户端进行数据传输的通道(ACK = y + 2)

2.四次不能合并为三次
因为中间需要确认消息是否发完(TIME_WAIT)

	三次握手和四次挥手也可以看成是小情侣谈恋爱的过程:
	三次握手:表白在一起
	四次挥手:决裂要分手

2、osi七层协议,哪七层,每层有哪些

OSI七层协议指的是开放式系统互联通信参考模型(Open System Interconnection,简称OSI)中的七个层次,每个层次都有不同的功能和作用。这七个层次分别是:

  1. 物理层(Physical Layer):负责传输比特流,也就是0和1的物理信号。主要包括物理介质、电器特性、传输速率等内容。
  2. 数据链路层(Data Link Layer):负责将比特流组成帧(规定了电信号的分组方式),添加物理地址,进行差错校验和纠错。主要包括MAC地址(由12位16进制数组成,前六位是厂商编号,后六位是生产流水号)、帧同步、差错控制等内容。
  3. 网络层(Network Layer):负责将帧传输到目标地址,也就是实现路由功能。主要包括IP地址、路由选择、分组选择等内容。
  4. 传输层(Transport Layer):负责建立、维护、释放端到端的连接,实现可靠的端到端数据传输。主要包括TCP、UDP协议等内容。PORT协议(端口协议:0-65535,我们通常用8000之后的)。URL(网址,本质是由IP和PORT组成的,通过DNS域名解析,就能得到网址对应的IP+PORT)
  5. 会话层(Session Layer):负责建立、管理和终止会话,也就是进程之间的通信。主要包括会话控制、同步等内容。
  6. 表示层(Presentation Layer):负责数据格式的转换和加密,以便不同类型的主机之间能够交换信息。主要包括数据格式转换、加密解密等内容。
  7. 应用层(Application Layer):负责提供网络服务,也就是用户直接使用的服务。主要包括HTTP、FTP、SMTP等协议。

七层可以合并成五层或四层

应用层(应用层、表示层、会话层整合在一起)

传输层
网络层

网络接口层(数据链路层、物理连接层)

3、tcp和udp的区别?udp用在哪里了?

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。

UDP(User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文,尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。

TCP和UDP都是互联网传输协议,它们之间的主要区别在于:

  1. 连接方式:TCP是面向连接的协议,UDP是无连接的协议。在TCP传输数据之前,需要先建立连接,而UDP则可以直接发送数据包。
  2. 数据可靠性:TCP是可靠的传输协议,它提供了数据的可靠传输,可以保证数据的正确性和完整性。UDP是不可靠的传输协议,它不提供数据的可靠传输,数据包可能会丢失或重复。
  3. 传输效率:由于TCP提供了可靠的传输机制,因此它的传输效率相对较低,而UDP则不提供可靠的传输机制,因此它的传输效率相对较高。

UDP通常用于那些对传输速度和实时性要求较高,但对数据可靠性要求相对较低的应用场景。比如,视频、音频和游戏等实时性要求高的应用程序,因为这些应用程序需要在短时间内传输大量的数据,而且对数据的可靠性要求不是非常高。在这些应用程序中,即使有一些数据包丢失或重复,也不会对用户体验产生太大的影响。

总之,TCP和UDP是两种不同的网络传输协议,它们之间有不同的特点和应用场景。TCP是可靠的连接协议,适用于对数据可靠性要求较高的应用场景;而UDP是无连接的协议,适用于对传输速度和实时性要求较高,但对数据可靠性要求较低的应用场景。


标签:容器,虚拟化,day1,docker,安装,Docker,服务端,客户端
From: https://www.cnblogs.com/zhihuanzzh/p/17307360.html

相关文章

  • 学习笔记396—自定义Docker镜像推送到Docker Hub实战
    自定义Docker镜像推送到DockerHub实战云原生探索的必经之路—容器化,而容器化目前最主流的技术莫过于Docker了,因为之前也大量的输出过Docker相关的技术博客,如果感兴趣的话可以直接访问专栏:​​《探索云原生》​​,按需学习哦。这篇文章还是从Docker入手,从0开始讲述下如何将自己的D......
  • 离线安装Docker、docker-compose、harbor、rancher、jenkins
    全文重点参考:https://blog.csdn.net/yuyangchenhao/article/details/117573732部署环境:1.centos72.ubuntu22.043.树莓派(这部分另写)离线环境下部署。0.前期准备  本文使用了上面博客提供的全部文件,可自行下载:https://pan.baidu.com/s/1Vp8R0Ac8KLHw2KlOiqtK8A......
  • 在docker安装Python环境提供给其他docker使用
    1.在宿主机新建一个目录2.在app目录下新建一个Dockerfile文件本文永久更新地址:1.在宿主机新建一个目录在宿主机上新建一个目录如app/,在app目录里面导入项目需要依赖的包在项目根目录下输入命令,导出python项目所有的依赖包pipfreeze>requirements.txt把导出的req......
  • Apache的安装与启动
    1.Apache的安装Linux系统中一般采用Apache作为Web服务器软件,安装软件包为httpd。可以通过以下命令查询系统是否已安装了Apache软件包。[root@localhost~]#yumlistinstalled|grephttpd如果没有安装httpd软件包,则配好yum源,使用yum命令安装。[root@localhost~]#yumi......
  • centos7安装redis
    centos7#安装yuminstallepel-releaseyumupdateyum install redis#命令serviceredisstopserviceredisstartserviceredisstatusserviceredisrestart#开机启动systemctlenableredis#禁用开机启动systemctldisableredis#配置密码vi/etc/redis.conf#查找requirepa......
  • 【Docker】docker介绍 什么是虚拟化 容器与虚拟机比较 Docker 概念 docker安装
    目录docker介绍什么是虚拟化docker是什么容器与虚拟机比较Docker概念docker安装docker介绍什么是虚拟化在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍......
  • windows下安装skywalking 9.2
      下载地址:https://skywalking.apache.org/downloads/安装,在skywalking9.0版本以后,APM包和agen包是分离的,解压后默认没有agent文件夹,需要手动创建,然后将解压后的skywalking-agent中的文件复制到agent文件夹下默认解压后的包含的文件创建agent后,目录结构在w......
  • gitlab-ce-15.9.4安装
    如果需要汉化,请根据汉化来选择版本汉化包下载地址:https://gitlab.com/xhang/gitlab/1.依赖包安装yum-yinstallpolicycoreutilsopenssh-serveropenssh-clientspostfix2.下载gitlab-ce并安装#下载安装包https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/git......
  • Docker容器使用Flannel通信
    Docker使用Flannel跨主机通信通信的方式路由虚拟包头flannel网络概念Flannel是Docker提供的一种网络解决方案,它旨在为容器提供简单的IP地址管理和跨主机通信。Flannel使用了一些现有的技术,比如Linux内核的TUN/TAP接口和ETCD分布式键值存储,来实现容器之......
  • 安装python扩展库
    安装python扩展库1. 进入安装好的python的文件夹下的Scripts目录   2.cmd命令行界面(输入cmd回车即可进入当前目录)   3.输入pipinstall库名   4.打开IDLE查看是否安装成功,回车之后没有出现报红报错信息就是安装成功了。    ......