Docker入门及安装

news/2024/5/10 9:55:41/文章来源:https://blog.csdn.net/m0_72568513/article/details/132110015

文章目录

  • 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.luyixian.cn/news_show_340032.aspx

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

相关文章

MySQL 重置root 密码

5.7 版本 首先要把服务mysql57 关闭 net stop MySQL57 在安装的mysql57的程序的bin中 运行cmd(管理员运行) mysqld --defaults-file‘mysql存放数据的位置\my.ini’ --skip-grant-tables 上图 错误 注意:如果遇到mysqld: Can’t change dir…

SpringBoot实现数据库读写分离

SpringBoot实现数据库读写分离 参考博客https://blog.csdn.net/qq_31708899/article/details/121577253 实现原理:翻看AbstractRoutingDataSource源码我们可以看到其中的targetDataSource可以维护一组目标数据源(采用map数据结构),并且做了路由key与目标…

T31开发笔记:librtmp拉流测试

若该文为原创文章,转载请注明原文出处。 T31使用librtmp拉流并保存成FLV文件或H264和AAC文件。 librtmp编译在前面有教程,自行编译。 实现的目的是想要获取获取rtmp的AAC流并播放,实时双向对讲功能。 一、硬件和开发环境 1、硬件&#xff1…

Emacs之解决键值绑定冲突问题(一百二十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

【数字IC基础】低功耗设计

低功耗技术 功耗构成静态功耗(漏电功耗)动态功耗翻转功耗(Switch Power)短路功耗(Internal Power) 不同类型的标准单元的功耗 低功耗设计方法降低芯片工作电压多阈值工艺方法电源门控(Power Gating)多电压域(Multi-Voltage Domain)体偏置门控时钟一个简单…

WSL1升级为WSL2

首先需要启用组件 使用管理员打开Powershell并运行 Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform启用后会要求重启计算机 从https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi获取WSL2 Linux内核更新包,…

浅谈postman设置token依赖步骤

📌 博客主页: 程序员念姐 📌 专注于软件测试领域相关技术实践和思考,持续分享自动化软件测试开发干货知识! 📌 如果你也想学习软件测试,文末卡片有我的交流群632880530,加入我们&…

【蓝图】p48冲刺、瞬移、多段跳

p48冲刺,瞬移,多段跳 p48冲刺,瞬移,多段跳冲刺功能实现瞬移功能实现Set Actor Location(设置Actor位置) 二段跳 p48冲刺,瞬移,多段跳 按shift加速,松开shift恢复普通速度…

数据库:MYSQL参数max_allowed_packet 介绍

1、参数作用 max_allowed_packet参数是指mysql服务器端和客户端在一次传送数据包的过程当中最大允许的数据包大小。如果超过了设置的最大长度,则会数据库保持数据失败。 2、问题场景 ● 有时候业务的需要,可能会存在某些字段数据长度非常大(比如富文本编辑器里面的内容),…

【项目 线程2】3.5 线程的分离 3.6线程取消 3.7线程属性

3.5 线程的分离 #include <stdio.h> #include <pthread.h> #include <string.h> #include <unistd.h>void * callback(void * arg) {printf("chid thread id : %ld\n", pthread_self());return NULL; }int main() {// 创建一个子线程pthread…

设备管理系统与物联网的融合:实现智能化设备监控和维护

在数字化时代&#xff0c;设备管理系统和物联网技术的融合为工业企业带来了巨大的变革和创新。本文将探讨设备管理系统与物联网的融合&#xff0c;重点介绍设备健康管理平台在实现智能化设备监控和维护方面的关键作用和优势。 一、设备管理系统与物联网的融合 随着物联网技术的…

springboot+vue网红酒店客房预定系统的设计与实现_ui9bt

随着计算机技术发展&#xff0c;计算机系统的应用已延伸到社会的各个领域&#xff0c;大量基于网络的广泛应用给生活带来了十分的便利。所以把网红酒店预定管理与现在网络相结合&#xff0c;利用计算机搭建网红酒店预定系统&#xff0c;实现网红酒店预定的信息化。则对于进一步…

硬件串口通信协议学习(UART、IIC、SPI、CAN)

0.前言 学习资料&#xff1a;江协科技的个人空间-江协科技个人主页-哔哩哔哩视频 通信的目的&#xff1a;将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统通信协议&#xff1a;制定通信的规则&#xff0c;通信双方按照协议规则进行数据收发 全双工&#xff1a;通信…

MybatisPlus实战笔记

概述 Mybatis支持定制化SQL、存储过程以及高级映射&#xff0c;避免几乎所有的 JDBC 代码和手动设置参数以及获取结果集。可以使用简单的 XML 或注解来配置和映射原生信息&#xff0c;将接口和Java的POJO映射成数据库中的记录。 缺点&#xff1a; SQL工作量很大&#xff0c;尤…

5款无广告的超实用软件,建议收藏!

​ 大家好,我又来了,今天向大家推荐几款软件,它们有个共同的特点,就是无广告、超级实用,大家看完之后,可以自己去搜索下载试用。 1.重复文件清理——Duplicate Cleaner ​ Duplicate Cleaner是一款用于找出硬盘中重复文件并删除的工具。它可以通过内容或文件名查找重复文档、…

Delphi Professional Crack,IDE插件开发和扩展IDE

Delphi Professional Crack,IDE插件开发和扩展IDE 构建具有强大视觉设计功能的单源多平台本机应用程序。 Delphi帮助您使用Object Pascal为Windows、Mac、Mobile、IoT和Linux构建和更新数据丰富、超连接、可视化的应用程序。Delphi Professional适合个人开发人员和小型团队构建…

Qt 6. 其他类调用Ui中的控件

1. 把主类指针this传给其他类&#xff0c;tcpClientSocket new TcpClient(this); //ex2.cpp #include "ex2.h" #include "ui_ex2.h"Ex2::Ex2(QWidget *parent): QDialog(parent), ui(new Ui::Ex2) {ui->setupUi(this);tcpClientSocket new TcpClient…

有利于提高xenomai /PREEMPT-RT 实时性的一些配置建议

版权声明:转自: https://www.cnblogs.com/wsg1100 一、前言 1. 什么是实时 “实时”一词在许多应用领域中使用,人们它有不同的解释,并不总是正确的。人们常说,如果控制系统能够对外部事件做出快速反应,那么它就是实时运行的。根据这种解释,如果系统速度快,则系统被认…

数据结构入门指南:带头双向循环链表

目录 文章目录 前言 1.结构与优势 2.链表实现 2.1 定义链表 2.2 创建头节点 2.3 尾插 2.4 输出链表 2.5 尾删 2.6 头插 2.7头删 2.8 节点个数 2.9 查找 2.10 位置插入 2.11 位置删除 2.12 销毁链表 3. 源码 总结 前言 链表一共有8种结构&#xff0c;但最常用的就是无头单…

IDEA的实用快捷键大全

目录 1.常规快捷键 1.1通用类 1.2注释类 1.3操作类 1.4展开与关闭 2.智能补全类快捷键 3.程序结构类快捷键 4.统一操作快捷键 1.常规快捷键 1.1通用类 像 Ctrl C 复制&#xff0c; Ctrl V 粘贴&#xff0c; Ctrl S保存文件&#xff0c; Ctrl X剪切&#xff0c;这种…