当前位置: 首页 > news >正文

centos 8 中安装Docker

注:本次样式安装使用的是centos8  操作系统。

1、镜像下载

具体的镜像下载地址各位可以去官网下载,选择适合你们的下载即可!

1、CentOS官方下载地址:https://vault.centos.org/

2、阿里云开源镜像站下载:centos安装包下载_开源镜像站-阿里云

3、网易开源镜像下载:Index of /centos/

2、Docker 简介

Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖环境打包成一个可移植的容器。这些容器可以在任何支持 Docker 的机器上运行,从而解决了“在我机器上可以运行”的问题。Docker 提供了一种轻量级的虚拟化方式,使得应用程序的部署、管理和扩展变得更加高效。

 2.1、Docker 的主要组成部分:

  1. Docker Engine:Docker 的核心组件,负责构建、运行和管理容器。
  2. Docker Hub:一个公共的容器注册中心,开发者可以在这里上传和分享容器镜像。
  3. Docker Compose:用于定义和运行多容器 Docker 应用的工具,通过 YAML 文件配置服务。

2.2、Docker 的优势:

  • 快速部署:借助容器,应用程序可以迅速从开发环境迁移到生产环境。
  • 资源隔离:每个容器都有独立的运行环境,确保不同应用之间不会互相干扰。
  • 可扩展性:可以轻松地创建多个相同的容器实例,以应对高并发需求。
  • 一致性:无论在开发、测试还是生产环境中,运行的都是相同的容器,减少了环境差异带来的问题。

2.3、Docker 在 Python 自动化测试中的作用

  1. 环境一致性:通过 Docker,可以确保测试环境与生产环境一致,避免因环境差异导致的测试失败。

  2. 依赖管理:将所有依赖项打包在容器内,避免了在本地机器上进行复杂的环境配置和依赖管理。

  3. 快速启动与停止:测试团队可以快速启动和停止容器,从而节省时间,特别是在进行多次测试时。

  4. 并行测试:Docker 可以轻松地创建多个容器实例,使得测试可以并行进行,提高测试效率。

  5. 易于集成:Docker 容器可以与 CI/CD 工具(如 Jenkins、GitLab CI 等)无缝集成,自动化测试流程。

  6. 回归测试:通过 Docker,开发团队可以轻松地回滚到之前的测试环境,进行回归测试,确保新代码的正确性。

3、开始安装

安装之前先ping www.baidu.com 看看自己的虚拟机是否能够联网,因为在安装的时候需要联网下载很多包和依赖。联网必不可少。

3.1、备份

切换到/etc/yum.repos.d/目录,查看当前目录下的文件

cd /etc/yum.repos.d/ 
ls 

执行结果如下:

创建一个文件夹用来备份当前目录下的所有内容

mkdir  bf

将源文件移动至备份文件夹

mv CentOS-* bf

3.2、下载安装镜像源

使用wget命令下载并替换镜像源,我这里使用的源为阿里云镜像:

wget https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo -O /etc/yum.repos.d/Centos-vault-8.5.2111.repo
wget https://mirrors.aliyun.com/repo/epel-archive-8.repo -O /etc/yum.repos.d/epel-archive-8.repo

执行结果如下:

注意,在这里http://mirrors.cloud.aliyuncs.com需要替换为http://mirrors.aliyun.com,因为官网提供的命令并没替换完,而且官网命令针对的是具有公网访问能力的ECS实例,所以这里各位如果报错的话,可以使用一下命令:

sed -i 's/mirrors.cloud.aliyuncs.com/mirrors.aliyun.com/g'  /etc/yum.repos.d/Centos-vault-8.5.2111.repo 
sed -i 's/mirrors.cloud.aliyuncs.com/mirrors.aliyun.com/g'  /etc/yum.repos.d/epel-archive-8.repo

执行如下:

3.3、清除原yum缓存建立新缓存

执行以下命令即可:

yum clean all && yum makecache

如果需要测试可以使用以下命令:

yum update -y   #后面跟一个你想要安装的包试试

3.4、更新系统

dnf update 命令用于更新系统中已安装的所有软件包。它是 DNF(Dandified YUM)的核心功能之一,主要作用包括:

  1. 软件包更新dnf update 会检查所有已安装软件包的最新版本,并自动下载和安装这些更新。这样可以确保系统中的软件保持最新状态,获得最新的功能和安全修复。

  2. 依赖关系管理:当某些软件包需要更新时,dnf 会自动处理相关的依赖关系,确保所有依赖的软件包都得到适当的更新。

  3. 安全更新:DNF 会提供有关安全更新的信息,通过 dnf update 可以确保系统安装了所有重要的安全补丁。

  4. 清理过时的软件包:在更新过程中,DNF 还可以自动删除那些不再需要的旧版本软件包,以节省磁盘空间。

  5. 持久化配置:DNF 允许用户通过配置文件定制更新行为,比如只更新特定的软件包,或定期自动更新。

  6. 插件支持:DNF 支持插件扩展功能,可以利用这些插件来增强更新过程的功能,例如记录更新日志或发送通知。

dnf update

注意:运行到这个需要各位输入y。确定下载。然后等待

OK,更新完成

3.4、安装依赖包

docker在运行的时候需要一些依赖包才能运行,

安装docker执行为什么要安装依赖包?

  1. 功能支持:Docker 需要特定的系统组件和库来实现容器化功能,如 containerdrunc 等,这些都是 Docker 的核心组件。

  2. 网络配置:Docker 使用特定的网络配置和协议来管理容器之间的通信,这需要相应的网络工具和库的支持。

  3. 存储驱动:为了高效管理容器数据,Docker 依赖于存储驱动(如 OverlayFS),这些驱动需要额外的依赖包来支持。

  4. 安全性:某些依赖包提供了安全功能,比如用户命名空间和其他安全策略的实现,确保容器的隔离性和安全性。

  5. 包管理器支持:在安装 Docker 时,包管理器(如 dnf 或 yum)会自动处理这些依赖关系,所以需要确保所有必要的包都已正确安装。

所以我们在安装之前需要先安装其运行的依赖包。执行一下命令即可!

dnf install -y dnf-utils device-mapper-persistent-data lvm2

命令和参数解释如下:

  1. dnf:这是一个现代化的包管理工具,替代了 YUM,用于在基于 RPM 的 Linux 发行版(如 CentOS、Fedora 等)上安装、更新和管理软件包。

  2. install:这是 DNF 的一个子命令,用于安装指定的软件包。

  3. -y:这是一个选项,表示在安装过程中自动回答 "yes",即所有提示会默认选择“Yes”。这使得安装过程无需人工干预,适合脚本化操作。

  4. dnf-utils:这是一个软件包,提供了一些有用的 DNF 工具和插件,帮助我们更好地管理软件包。

  5. device-mapper-persistent-data:这个软件包为设备映射器提供持久化的存储支持,允许在容器和卷管理中使用持久化的存储特性,这是 Docker 和 LVM 等技术所需要的。

  6. lvm2:这是逻辑卷管理(LVM)的工具包,允许用户创建和管理逻辑卷,以便更灵活地管理磁盘空间,对 Docker 的存储管理和数据持久化也非常重要。

执行成功后如下图:

3.5、添加 Docker 的yum 仓库

首先这里,做下说明:

为什么在centosos8中安装docker时需要建立docker的yum库?

  1. 获取最新软件包:Docker 的 YUM 仓库包含了 Docker 的最新版本及其依赖包。通过添加这个仓库,用户能够确保安装的是最新稳定版本,而不是系统默认仓库中的过时版本。

  2. 依赖管理:Docker 的 YUM 仓库自动处理软件包之间的依赖关系。安装 Docker 时,它会自动下载并安装所需的所有依赖包,简化了安装过程。

  3. 与系统兼容:Docker 的官方仓库提供的包是经过测试和验证的,确保与 CentOS 8 系统的兼容性,减少了因版本不一致导致的问题。

  4. 简化安装过程:通过使用 YUM 仓库,用户可以通过简单的命令(如 yum install docker-ce)轻松安装 Docker,而不需要手动下载和配置多个软件包。

  5. 安全更新:Docker 的 YUM 仓库会定期更新,包含安全补丁和改进。通过配置 YUM 仓库,用户可以轻松获取这些更新,保持系统安全。

我们目前使用的centos 8 系统,并没有属于docker的yum仓库,所以需要我们自己建立。

执行一下命令:

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

命令和参数解释如下:

  1. config-manager:这是 DNF 的一个子命令,允许用户管理软件源的配置,包括添加、删除和修改软件源。

  2. --add-repo:这是一个选项,用于指定要添加的新软件源。

  3. https://download.docker.com/linux/centos/docker-ce.repo:这是要添加的 Docker Community Edition(Docker CE)的 YUM 仓库的 URL。这一仓库包含了 Docker 的最新版本及其依赖包,用户可以通过它来安装和更新 Docker。

执行完成后如下所示:

3.6、安装 Docker

yum install -y docker-ce --allowerasing

命令和参数解释如下:

  1. docker-ce:这是要安装的软件包的名称,表示 Docker Community Edition。Docker CE 是 Docker 的开源版本,适用于开发和小型环境的使用。

  2. --allowerasing:这是一个选项,表示在安装过程中如果发现有冲突的软件包(即某些软件包版本不兼容),YUM 可以自动删除这些冲突的软件包,以便顺利安装目标软件包。这在处理版本冲突时非常有用,能够确保安装过程不会因为依赖冲突而中断。

安装一共6个ce文件,不要少哦!

安装完成

3.7、启动 Docker

systemctl start docker  或者  systemctl start docker.service

查看启动的状态

systemctl status docker   或者systemctl status docker.service

3.8、配置阿里云镜像加速

地址:https://cr.console.aliyun.com/

在配置之前我们可以先查看我们当前的docker源

需要自己注册一个一个阿里云的账号,我已经注册好了。直接搜索

进入以下界面

当然,这里的文档里面也已经 有对应的配置步骤,可以按照他的来,配置即可

执行一下代码:

vim /etc/docker/daemon.json

进入编辑器,添加一下内容


{"registry-mirrors": ["https://替换成你们自己的.aliyuncs.com"]
}

然后保存退出

修改完 Docker 配置之后,我们需要重新启动 Docker 服务,使配置生效:

systemctl restart docker

再次执行 docker info 命令来验证 Docker 源是否设置成功:

显示以上代码则说明配置完成。

3.9、查看版本是否安装成功

docker version  或者 docker

3.10、设置开机自启docker

systemctl enable docker

3.11、停止docker

systemctl stop docker

3.12、重启 Docker服务

systemctl restart docker

3.13、测试docker

docker run hello-world

此时我们也可以查看是否成功拉取hello-world镜像:

docker images

报错解决:

我们拉去镜像执行命令的时候,有时候会报这个错误

报了一个超时的错误,这个解决方式如下,

更换镜像源:

可以使用一下镜像源,具体的操作步骤可以按照我们刚开始配置加速镜像的步骤来。

1、sudo mkdir -p /etc/docker
2、sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"]
}
EOF
3、sudo systemctl daemon-reload
4、sudo systemctl restart docker
5、systemctl status docker

重启完docker之后检查registry mirror刚刚配置的加速地址是否成功

docker info

成功更换镜像加速地址

然后在继续执行

docker run hello-world

就可以了

相关文章:

centos 8 中安装Docker

注&#xff1a;本次样式安装使用的是centos8 操作系统。 1、镜像下载 具体的镜像下载地址各位可以去官网下载&#xff0c;选择适合你们的下载即可&#xff01; 1、CentOS官方下载地址&#xff1a;https://vault.centos.org/ 2、阿里云开源镜像站下载&#xff1a;centos安装包…...

vscode vue 自动格式化

vscode vue 自动格式化 安装Prettier和Vetur插件 选择设置&#xff0c;并且转到编辑文件。增加如下内容。 {"editor.formatOnSave": true,"editor.defaultFormatter": "esbenp.prettier-vscode","[vue]": {"editor.defaultFor…...

Webpack 5 混淆插件terser-webpack-plugin生命周期作用时机和使用注意事项

参考案例代码 海南酷森科技有限公司/webpack-simple-demo Terser&#xff08;简要的/简短的&#xff09; 混淆依据 混淆是发生在代码已经 bundle 之后的事情 变量或者函数在被引用或赋值时才能被混淆 孤立的函数或者变量可能会被移除&#xff0c;但不会被混淆&#xff0c;要…...

MQTT(Message Queuing Telemetry Transport)协议

文章目录 一、MQTT 的原理1. 通信模型2. 核心概念3. 工作流程 二、MQTT 的优势1. 轻量级2. 异步通信3. 可靠性4. 实时性5. 支持断线重连6. 跨平台支持7. 安全性 三、MQTT 的典型应用场景四、与其他协议的对比 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;…...

【MySQL学习笔记】MySQL存储过程

存储过程 1、基础语法2、变量2.1 系统变量2.2 用户自定义变量2.3 局部变量 3、if 流程控制4、参数5、case 流程控制6、循环结构6.1 while 循环6.2 repeat 循环6.3 loop 循环 7、游标 存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合&#xff0c;调用存储过程可以…...

Vue2+OpenLayers实现折线绘制、起始点标记和轨迹打点的完整功能(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、代码实现 3.1、HTML页面 3.2、初始化变量 3.3、创建起始点位 3.4、遍历轨迹点 3.5、画折线 3.6、初始化弹窗信息 3.7、初始化地图上标点的点击事件 3.8、完整代码 四、Gitee源码 一、案例截图 二、安装OpenLayers库 n…...

基于Spring Boot的城市垃圾分类管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

linux: 文本编辑器vim

文本编辑器 vi的工作模式 (vim和vi一致) 进入vim的方法 方法一:输入 vim 文件名 此时左下角有 "文件名" 文件行数,字符数量 方法一: 输入 vim 新文件名 此时新建了一个文件并进入vim,左下角有 "文件名"[New File] 灰色的长方形就是光标,输入文字,左下…...

Eclipse Debug 调试

关于Eclipse的Debug调试功能&#xff0c;有几点重要的信息可以分享。 Debug的启动方式&#xff1a;Eclipse提供了多种启动程序调试的方式&#xff0c;包括通过菜单(Run –> Debug)、点击“绿色臭虫”图标、右键选择Debug As以及使用快捷键(F11)【0†source】。 调试中最常用…...

vue3+ts的<img :src=““ >写法

vue3ts的<img :src"" >写法<img :src"datasetImage" alt"数据分布示意图" /><script setup lang"ts">const datasetImage ref();datasetImage.value new URL(../../../assets/images/login-background.jpg, impo…...

《心血管成像的深度学习》论文精读

Deep Learning for Cardiovascular Imaging 重要性&#xff1a;由深度学习 (DL) 的进步推动的人工智能 (AI) 有可能重塑心血管成像 (CVI) 领域。虽然 CVI 的 DL 仍处于起步阶段&#xff0c;但研究正在加速&#xff0c;以帮助获取、处理和/或解释各种模式下的 CVI&#xff0c;其…...

RDP、VNC、SSH 三种登陆方式的差异解析

一、引言 在计算机系统管理和远程访问的领域中&#xff0c;RDP&#xff08;Remote Desktop Protocol&#xff0c;远程桌面协议&#xff09;、VNC&#xff08;Virtual Network Computing&#xff0c;虚拟网络计算&#xff09;和 SSH&#xff08;Secure Shell&#xff09;是三种广…...

3d 可视化库 vister部署笔记

目录 vister 开源地址: python版本: 在python3.10以上版本安装 viser, 测试ok的案例: 立方体mesh选中 SMPL-X可视化 ok 推理代码: vister 开源地址: GitHub - nerfstudio-project/viser: Web-based 3D visualization + Python python版本: 在python3.10以上版本…...

操作系统八股文学习笔记

总结来自于javaguide,本文章仅供个人学习复习 javaguide操作系统八股 文章目录 操作系统基础什么是操作系统?操作系统主要有哪些功能?常见的操作系统有哪些?用户态和内核态为什么要有用户态和内核态?只有一个内核态不行嘛?用户态和内核态是如何切换的?系统调用 进程和线程…...

k8s基础(6)—Kubernetes-存储

Kubernetes-存储概述 k8s的持久券简介 Kubernetes的持久卷&#xff08;PersistentVolume, PV&#xff09;和持久卷声明&#xff08;PersistentVolumeClaim, PVC&#xff09;为用户在Kubernetes中使用卷提供了抽象。PV是集群中的一块存储&#xff0c;PVC是对这部分存储的请求。…...

K8S--配置存活、就绪和启动探针

目录 1 本人基础环境2 目的3 存活、就绪和启动探针介绍3.1 存活探针3.2 就绪探针3.3 启动探针 4 探针使用场景4.1 存活探针4.2 就绪探针4.3 启动探针 5 配置存活、就绪和启动探针5.1 定义存活探针5.2 定义一个存活态 HTTP 请求接口5.3 定义 TCP 的就绪探针、存活探测5.4 定义 g…...

永久免费工业设备日志采集

永久免费: <下载> <使用说明> 用途 定时全量或增量采集工控机,电脑文件或日志. 优势 开箱即用: 解压直接运行.不需额外下载.管理设备: 后台统一管理客户端.无人值守: 客户端自启动,自更新.稳定安全: 架构简单,兼容性好,通过授权控制访问. 架构 技术架构: Asp…...

详解 Docker 启动 Windows 容器第二篇:技术原理与未来发展方向

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言所遇问题问题 1&#xff1a;Docker 容器启动的 Windows 实例调用了 KVM 驱动&#xff0c;但为什么用 virsh list 命令查不到虚拟机&#xff1f;这意味着它不是一…...

HC32L136K8TA单片机输出互为反相双路PWM

可这里可以参考stm32的代码看看 HC32L136K8TA的机制跟32差不多 以使用一个通用定时器输出两路互为反相的 PWM 波&#xff0c;但需要通过一定的配置技巧实现。与高级定时器&#xff08;如 STM32 的 TIM1、TIM8 等&#xff09;不同&#xff0c;通用定时器通常没有直接的互补输出…...

数据分析-55-时间序列分析之获取时间序列的自然周期时间区间

文章目录 1 获取某年的总天数1.1 get_year_days()1.2 应用函数2 获取某年的总周数2.1 get_year_weeks()2.2 应用函数3 获取某日期属于某年的周数3.1 get_time_yearweek()3.2 应用函数4 获取某年某周的开始时间和结束时间4.1 get_week_start_end()4.2 应用函数5 获取往前num周期…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...