Docker入门及安装

文章目录

  • 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.hqwc.cn/news/52209.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【iOS安全】OpenSSH使用

安装OpenSSH 在 Cydia 中直接查找和安装 OpenSSH 使用OpenSSH http://orinchen.github.io/blog/2014/01/15/install-and-use-openssh-on-ios/ 保证PC和iPhone在同一网段下 查看iPhone的IP地址 ssh root10.168.xx.xx 口令默认是alpine 或者也可以使用XShell等集成终端

企业上云实施路线图

企业上云步骤主要分为规划、设计、实施、验证、运维五个阶段。https://articles.e-works.net.cn/cloud/article144684.htm

机器学习---概述(一)

文章目录 1.人工智能、机器学习、深度学习2.机器学习的工作流程2.1 获取数据集2.2 数据基本处理2.3 特征工程2.3.1 特征提取2.3.2 特征预处理2.3.3 特征降维 2.4 机器学习2.5 模型评估 3.机器学习的算法分类3.1 监督学习3.1.1 回归问题3.1.2 分类问题 3.2 无监督学习3.3 半监督…

【大数据】ELK最简入门案例(带你进入ELK世界)

文章目录 1. 前言2. 安装3. 启动ELK启动Elasticsearch启动Kibana启动Logstash 4. 测试ELK环境 本文通过最简单纯正的案例带你入门ELK世界。 1. 前言 ELK是Elasticsearch、Logstash、Kibana的缩写,如果对Elasticsearch、Logstash、Kibana不是很了解,可以…

SpringBoot使用@Autowired将实现类注入到List或者Map集合中

前言 最近看到RuoYi-Vue-Plus翻译功能 Translation的翻译模块配置类TranslationConfig,其中有一个注入TranslationInterface翻译接口实现类的写法让我感到很新颖,但这种写法在Spring 3.0版本以后就已经支持注入List和Map,平时都没有注意到这…

redis五种数据类型介绍

、string(字符串) 它师最基本的类型,可以理解为Memcached一模一样的类型,一个key对应一个value。 注意:一个键最大能存储 512MB。 特性:可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512…

【C++】继承的基本特性(定义,赋值转换,友元,静态成员,虚拟继承,默认成员函数,作用域)

文章目录 一、继承的定义1.定义格式2.继承基类成员访问方式的变化 二、基类和派生类对象赋值转换三、继承的作用域1. 在继承体系中基类和派生类都有独立的作用域。2.子类和父类中有同名成员3.成员函数的隐藏4.注意在实际中在继承体系里面最好不要定义同名的成员。 四、派生类的…

Unity Shader编辑器工具类ShaderUtil 常用函数和用法

Unity Shader编辑器工具类ShaderUtil 常用函数和用法 Unity的Shader编辑器工具类ShaderUtil提供了一系列函数,用于编译、导入和管理着色器。本文将介绍ShaderUtil类中的常用函数和用法。 编译和导入函数 CompileShader 函数签名:public static bool C…

Apache Kafka Learning

目录 一、Kafka 1、Message Queue是什么? 2、Kafka 基础架构 3、Kafka安装 二、Maven项目测试 1、Topic API 2、生产者&消费者 一、Kafka Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式…

openCV图像读取和显示

文章目录 一、imread二、namedWindow三、imshow #include <opencv2/opencv.hpp> #include <iostream>using namespace std; using namespace cv;int main(int argc,char** argv) {cv::Mat img imread("./sun.png"); //3通道 24位if (img.empty()) {std:…

Typescript中的元组与数组的区别

Typescript中的元组与数组的区别 元组可以应用在经纬度这样明确固定长度和类型的场景下 //元组和数组类似&#xff0c;但是类型注解时会不一样//元组赋值的类型、位置、个数需要和定义的类型、位置、个数完全一致&#xff0c;不然会报错。 // 数组 某个位置的值可以是注解中的…

理解 CSS 中的 Containing Block

前言 在开始本文之前先来看一个例子&#xff0c;下面一段简单的 html 代码&#xff0c;布局很简单&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"w…