Docker入门及安装

news2024/9/30 13:33:28

文章目录

  • 1.Docker概述:
    • 1.什么是docker
    • 2.为什么使用docker
    • 3.docker优点
    • 4.docker资源网址
  • 2.Docker安装
    • 1.卸载旧版本dorcker(非必要)
    • 2.设置Docker仓库
    • 安装docker引擎
    • 4.启动验证docker
    • 卸载docker
  • 3.Docker底层原理
    • 1.docker的结构和基本概念
    • 2.docker为什么比虚拟机快

1.Docker概述:

1.什么是docker

Docker是一个用来开发、运输和运行应用程序的开放平台。使用Docker可以将应用程序与基础结构分离,以便快速交付软件。使用Docker,您可以以管理应用程序的方式管理基础架构。通过利用Docker的方法快速传送、测试和部署代码,可以显著减少编写代码和在生产中运行代码之间的延迟。

2.为什么使用docker

在传统企业中,有很多这样的情况(例如某某公司):有在线的TMOOC系统,有TTS系统。有财务软件系统,有OA,有CRM等。这些系统都部署在一个服务器上是肯定不行的。如果服务器宕机了,会导致这些系统不能使用。所以为了安全性的考虑,有几个系统必须有几台服务器。
在这里插入图片描述
但是这样的结构有几个弊端:
1、有些系统运行不需要一个服务器的资源,例如crm。这样对服务器的资源就造成了浪费的情况。
2、服务器的资源利用率特别低。
3、企业为这些系统购买了服务器,花费了很大的成本。
4、必须有一些人去维护这些服务器。

  • 所有就有了docker和容器的概念
    在这里插入图片描述
    一个Docker容器可以理解为一个进程。同一个服务器可以启动多个docker容器进程。
    一个Docker容器还可以理解为一个微缩的操作系统。你可以在这个容器内部实现你在一个操作系统中完成的所需功能。
    可以在很短时间内增加上万个Docker容器。
    可以在很短时间内删除掉上万个Docker容器。

3.docker优点

  • 更快速的应用交付和部署:
    传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。
  • 更便捷的升级和扩缩容:
    随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。
  • 更简单的系统运维:
    应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。
  • 更高效的计算资源利用:
    Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的Hypervisor [管理程序] 支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利用率。

4.docker资源网址

Docker官网:http://www.docker.com
Docker Hub官网(镜像仓库):https://hub.docker.com

2.Docker安装

  • 环境centos
  • 所有步骤,均参考官方文档 https://docs.docker.com/engine/install/centos/

1.卸载旧版本dorcker(非必要)

  • 为了防止环境中docker冲突,旧docker残留影响安装,需要先执行卸载。如果确定当前环境没有docker,可以不执行。
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  • 运行命令候,如果有就删除了,如果没有docker
    在这里插入图片描述
    没有docker删除记录

2.设置Docker仓库

  • 安装docker有3种途径
    在这里插入图片描述
    这三种方式分别是:
  • 设置docker仓库,并且从仓库安装所需内容。
  • 下载RPM安装包,手动更新安装。
  • 为测试和开发环境使用自定义脚本安装。
    我们使用最简单,也是官方最推荐的第一种方式来安装docker即可。
    安装yum-utils包(提供用yum-config-manager实用程序)并设置稳定的存储库
  • 如果有其他的仓库管理地址,也可以自行更改链接地址。两个yum命令执行完毕后,仓库设置完成
    在这里插入图片描述

安装docker引擎

在官方文档中,配置完仓库地址,可选操作是配置测试仓库。
在这里插入图片描述

  • 这个nightly和test仓库本身是包含在上一步我们配置的docker.repo中的,但是默认没有开启,可选操作就是如果使用的话,可以enable开启。
    注意:可选步骤后续不在解释,自行到官方文档查看。仅以本步骤为例解释。
  • 接下来我们可以直接执行安装docker引擎的操作。执行以下命令,可以安装最新版本docker。
    yum -y install docker-ce docker-ce-cli containerd.io
  • 在安装过程中,由于操作系统环境中的yum依赖不一定满足安装的全部依赖需求,可能出现问题
    在这里插入图片描述
  • 解决办法就是根据提示,使用yum安装依赖,可以从第一个开始尝试,有可能需要全部安装一遍,有可以只需要安装部分,那么其他依赖就自然传递过来。
  • 根据图中我们缺少 container-selinux,fuse-overlayfs,slirp4netns这三个包。我们可以依次执行命令。
yum -y install container-selinux
yum -y install fuse-overlayfs
yum -y install slirp4netns

注意:有可能在这个阶段,需要更换或者更新yum源。比如这里的container-selinux就是需要更换yum源添加包的。
在执行上述命令前,对原有CentOS-Base.repo先进行备份。
将所需依赖包安装完成后,我们可以重新安装docker相关包。

4.启动验证docker

安装完毕后,我们可以启动docker。
systemctl start docker

  • 然后运行docker的第一个镜像容器。
  • 如果运行成功,可以看到提示信息,表示docker安装成功

在这里插入图片描述

卸载docker

如果想要卸载已经安装好的docker也是非常简单的。
第一步先卸载相关安装包。
yum remove docker-ce docker-ce-cli containerd.io
然后将docker存储的资料数据删除。

rm -rf /var/lib/docker
rm -rf /var/lib/containerd

3.Docker底层原理

1.docker的结构和基本概念

docker的主要结构是客户端,宿主机,容器,镜像和镜像服务器
在这里插入图片描述

  • 容器(container)
    首先需要了解什么是容器,容器就是一个进程,内部是独立运行的一个或者是一组应用。它可以被启动、开始、停止、删除。每个容器都是相互隔离的,保证安全的平台。它可以被启动、开始、停止、删除。每个容器都是相互隔离的,保证安全的平台。
  • 镜像(image)
    镜像(Image)就是一个只读的模板文件。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。 就好似 Java 中的 类和对象,类就是镜像,容器就是对象!也可以把镜像看成是模具,而镜像创建出来的容器就是通过这个模具创建的一个一个的实际产品。
  • 宿主机(host)
    宿主机就是我们调用命令使用镜像创建容器的服务器。
  • 镜像仓库(repository)
    一个用来容纳多个镜像的仓库,可以链接仓库获取你想要的内部镜像,一般一个镜像仓库中包含多个不同tag的镜像。
  • 镜像服务器(registry)
    镜像仓库占用的服务器,这里注意一个镜像服务器未必只有一个仓库,可以有很多仓库,每个仓库又保管的是不同镜像。
  • 客户端(docker-client)
    调用docker命令,操作镜像,容器的进程。只要能链接宿主机,操作docker的进程都是docker-client。

2.docker为什么比虚拟机快

虚拟化技术开启了云计算时代,是的大量硬件服务器可以隔离,可以独立。而docker开启了下一代虚拟化技术,但是docker并不是虚拟机。首先我们来了解一下物理机是怎么工作的
在这里插入图片描述
从下到上依次为:

  • infrastructure基础设施:这个指的就是你的电脑硬件,可以是个人pc,可以是服务器,可以使云主机。
  • HOST OS操作系统:安装使用的主机操作系统,可以是windows,MacOS,linux。
  • dependencies依赖:运行程序需要用到的依赖,可以是插件,基础服务,语言环境等。
  • app应用:用户使用物理机的应用程序,可以使qq,微信,游戏等。
    当虚拟机出现之后,我们可以在一个物理机上安装启动多个虚拟机,这种结构开启了云时
    在这里插入图片描述
    从下到上依次为:
  • infrastructure基础设施:这个指的就是你的电脑硬件,可以是个人pc,可以是服务器,可以使云主机。同上,没变化
  • HOST OS操作系统:安装使用的主机操作系统,可以是windows,MacOS,linux。同上,没变化。
  • Hypervisor虚拟机管理系统:利用Hypervisor,可以在主操作系统之上运行多个不同的从操作系统。也是虚拟机技术关键。
  • Guest OS 客户机操作系统:这个表示每一个虚拟机运行时需要启动的操作系统,相当于在宿主机操作系统之上,每个虚拟机又另外配置了自己的操作系统。这个过程是想到消耗资源的,无论是cpu,内存,还是磁盘空间。
  • dependencies依赖:运行程序需要用到的依赖,可以是插件,基础服务,语言环境等。这里需要注意的是,每一个虚拟机中的依赖相互是独立的,也就是说即使2个虚拟机都是用同一个jdk环境,那么也是各自配置各自,不能共享。
  • app应用:用户使用物理机的应用程序,可以使qq,微信,游戏等。同上,没变化。
    在这里插入图片描述
    这里的结构基本和前面类似,我们只强调和虚拟机区别的地方:
  • 没有Hypervisor,而是使用docker管理器,这样一来,不需要为每一个虚拟的容器单独构建客户机操作系统,极大的节省了硬件资源。
  • 依赖不在相互独立,而是共享的。这样一来在宿主机上只需要下载安装一次依赖,只要容器使用这个依赖,即使有几万个容器,也都是共享这一个依赖。
    综上所述,在漫长的虚拟机话技术发展之后的今天,容器已经成为一个轻便的,不可替代的虚拟化产品,是开发者不得不掌握的技术之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/837094.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【新版系统架构补充】-传输介质、子网划分

传输介质 双绞线:无屏蔽双绞线UTP和屏蔽双绞线STP,传输距离在100m内 网线安装标准: 光纤:由纤芯和包层组成,分多模光纤MMF、单模光纤SMF 无线信道:分为无线电波和红外光波 通信方式和交换方式 单工…

简单易懂的生鲜蔬果小程序开发指南

随着人们对健康意识的提高,越来越多的人开始注重饮食健康,选择新鲜的果蔬产品。为了满足市场需求,制作一个果蔬配送小程序成为了一个不错的选择。本文将详细介绍如何快速制作一个果蔬配送小程序。 第一步:登录乔拓云网后台&#x…

InterProcessMutex 类的作用和使用

InterProcessMutex 类是Curator框架中的一个分布式锁的实现,用于在分布式环境下实现互斥锁。 InterProcessMutex 的使用步骤如下: 创建 CuratorFramework 客户端实例,并启动客户端连接到 ZooKeeper 服务器。使用 CuratorFramework 的 creat…

leetcode37. 解数独(java)

解数独 解数独题目描述回溯算法代码演示 回溯算法 解数独 难度 困难 leetcode37. 解数独 题目描述 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 1.数字 1-9 在每一行只能出现一次。 2.数字 1-9 在每一列只能出现一次。 3.数字…

2020-2023中国高等级自动驾驶产业发展趋势研究

1.1 概念界定 2020-2023中国高等级自动驾驶产业发展趋势研究Trends in China High-level Autonomous Driving from 2020 to 2023自动驾驶发展过程中,中国出现了诸多专注于研发L3级以上自动驾驶的公司,其在业界地位也越来越重要。本报告围绕“高等级自动…

如何搭建自动化测试框架?资深测试整理的PO模式,一套打通自动化...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Po模型介绍 1、简…

MCU的类型和应用领域简介

MCU(Microcontroller Unit)根据存储器类型可分为无片内ROM型和带片内ROM型。无片内ROM型的芯片需要外接EPROM才能应用,而带片内ROM型则有不同的子类型,如片内EPROM型、MASK片内掩模ROM型和片内Flash型。 MCU还可以按照用途分为通…

JavaSE程序逻辑控制(三种基本结构(顺序、分支、循环)、输入输出、循环输入)

目录 一、顺序结构 二、分支结构 1、 if 语句 2、switch 语句 与C语言不同,不能作为switch参数的类型:float double long boolean 三、循环结构 1.while循环 2.for循环 四、输入输出 1.输出 - 将结果显示打印到屏幕上 2.输入 3.输入输出综合…

Java的方法怎么用?递归是什么?一篇文章带你醍醐灌顶

目录 1.方法定义 2.实参 形参 3.方法重载 4.递归 1.方法定义 // 方法定义 修饰符 返回值类型 方法名称([参数类型 形参 ...]){ 方法体代码; [return 返回值]; }public static 返回值 方法名(形式参数列表){} 实现一个函数,检测一个年份是否为闰年 public class M…

从零开始yolov5模型训练【绝对能学会】

与其说是学习目标检测任务,不如暂时说成是如何正确运行一个yolo小项目。 一、anaconda 安装: Anaconda安装以及如何创建新环境 安装好了之后打开Anaconda Prompt: anaconda的base环境下: 针对yolov5创建一个自己的环境&#xff…

Spring指定bean在哪个应用加载

1.背景 某项目,spring架构,有2个不同的WebAppApplication入口,大部分service类共用,小部分类有区别,只需要在一个应用中加载,不需要在另一个应用中加载. 2.实现代码 自定义限制注解 package mis.shared.annotation;import java.lang.annotation.ElementType; import java.lan…

【深度学习_TensorFlow】手写数字识别

写在前面 到这里为止,我们已经学习完张量的常用操作方法,已具备实现大部分神经网络技术的基础储备了。这一章节我们将开启神经网络的学习,然而并不需要像学习前面那样了解大量的张量操作,而是将重点转向理解概念知识,…

SQL92 SQL99 语法 Oracle 、SQL Server 、MySQL 多表连接、Natural 、USING

SQL92 VS SQL 99 语法 92语法 内连接 from table1, table2 where table1.col table2.col 外连接 放在 从表 左连接: from table1, table2 where table1.col table2.col() 右连接: from table1, table2 where table…

全网最全最细的jmeter接口测试教程以及接口测试流程详解

一、Jmeter简介 Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试。 Jmeter具备高移植性,可以实现跨平台运行。 Jmeter可以实现分布式负载。 Jmeter采用多线程,允许通过多个线程并发取样或通过…

UE4查看加密PAK里边的资源Android/iOS/PC方法

我们经常会需要把1个模型进行减面然后在移动端使用,有时候会出现移动端模型和PC端模型不一致的问题,这时候就需要将移动端的模型和PC端的模型进行对比,找到问题出现的原因,检查Mesh、Normal、UV0、UV1、MaterialId、碰撞等是否一致。 如何打包Pak文件,见这篇文章:UE4打包…

visio过段时间失效了再次破解

坑:一定要 右键在这个bat上面以管理员身份运行,不要直接运行否则会失败; 还有编码,ANSI编码!!! 如图 参考:

机器学习基础08-模型选择02-分类算法矩阵(基于Pima 数据集)

算法评估矩阵(Algorithm Evaluation Metrics)用于评估机器学习算法在特定任务上的性能。不同的任务可能会使用不同的评估矩阵,因为每个任务的优劣衡量标准都不同。 分类算法矩阵 分类问题或许是最常见的机器学习问题,并且有多种评…

【Linux】节点之间配置免密登录

文章目录 1、实现2、原理3、SSH的理解 1、实现 先写实现,解决问题后有兴趣的自己看后面的原理。 以实现节点A(主)免密登录到节点B(从)为例:(注意例子里节点B被登录) 步骤一&#xf…

JavaScript 中的隐式类型转换

一、什么情况会发生隐式类型转换? 1、加号() 号比较特殊,既可以当做算数运算符做加法,又可以当做字符串连接符 ① 算数运算符 除了 string 类型以外的原始数据类型进行加法运算时,非数字类型会转换为数字…

uniapp对uni.request()的封装以及使用

前言: 在uniapp中向服务端发送请求较为容易,使用 uni.request() 即可。 uni.request({url: https://www.example.com/request, //仅为示例,并非真实接口地址。data: {text: uni.request},header: {custom-header: hello //自定义请求头信息…