centos 8 中安装Docker

news2025/1/15 22:43:13

注:本次样式安装使用的是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

就可以了

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

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

相关文章

Sui Move:基本概览一

Module (模块) Move 代码被组织成模块, 可以把一个模块看成是区块链上的一个智能合约 可以通过调用这些模块中的函数来与模块进行交互&#xff0c;可以通过事务或其他 Move 代码来实现, 事务将被发送到并由Sui区块链进行处理&#xff0c;一旦执行完成&#xff0c;结果的更改将…

1/13+2

运算符重载 myString.h #ifndef MYSTRING_H #define MYSTRING_H #include <cstring> #include <iostream> using namespace std; class myString {private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度int capacity; …

GD32F470Z外部晶振不起振

亲测&#xff0c;主要的原因是因为系统配置里面选择的晶振&#xff0c;选择内部还是外部的无源晶振。 1.无源晶振 打开startup_gd32f450_470.s这个起始文件。 ​​​​​​​ ​​​​​​​ 找到SystemInit。 跳进去这个函数。 在这个函数里面最底下找到sys…

用css和html制作太极图

目录 css相关参数介绍 边距 边框 伪元素选择器 太极图案例实现、 代码 效果 css相关参数介绍 边距 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>*{margin: 0;padding: 0;}div{width: …

【2025 Rust学习 --- 17 文本和格式化 】

字符串与文本 Rust 的主要文本类型 String、str 和 char 内容概括&#xff1a; Unicode 背景知识&#xff1f;单个 Unicode 码点的 char&#xff1f;String 类型和 str 类型都是表示拥有和借用的 Unicode 字符序列。Rust 的字符串格式化工具&#xff0c;比如 println! 宏和 …

C#中颜色的秘密

颜色的秘密: 颜色Color是一个调色板, 所有颜色都是由透明度Alpha,红Red,绿Green,蓝Blue按不同比例调色混合而成,如果不考虑透明度Alpha,颜色共有256*256*25616777216种 ColorARGB A,R,G,B都为byte型[8位],因此可以用整体的32个整数[Int32]来表示一种颜色 Color 所属命名空…

Pycharm 使用教程

一、基本配置 1. 切换Python解释器 pycharm切换解释器版本 2. pycharm虚拟环境配置 虚拟环境的目的&#xff1a;创建适用于该项目的环境&#xff0c;与系统环境隔离&#xff0c;防止污染系统环境&#xff08;包括需要的库&#xff09;虚拟环境配置存放在项目根目录下的 ven…

phpenc加密程序源码

免费扩展加密程序&#xff0c;类似于sg11加密&#xff0c;支持单个PHP&#xff08;免费&#xff09;文件以及批量PHP文件&#xff08;ZIP压缩包格式&#xff09;源码加密的保护平台&#xff0c;加密后的源码文件保持原有代码结构&#xff0c;可以跨平台运行&#xff0c;可以运行…

视频转码对画质有影响吗?视频融合平台EasyCVR支持哪些转码格式?

视频转码过程是将视频文件从一种编码格式转换为另一种格式的过程&#xff0c;这一过程在现代数字媒体中扮演着至关重要的角色。众所周知&#xff0c;视频转码不仅仅是简单的格式转换&#xff0c;它涉及多个关键参数的改变&#xff0c;例如视频编码格式、比特率、分辨率以及帧率…

LeetCode热题100(哈希篇)

题目出自Leetcode热题100&#xff1a;Leetcode热题100 文章目录 1. 两数之和思路代码CJavaPython 49. 字母异位词分组思路代码CJavaPython 128. 最长连续序列思路代码CJavaPython 总结 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找…

python学opencv|读取图像(三十一)缩放图像的三种方法

【1】引言 前序学习进程中&#xff0c;我们至少掌握了两种方法&#xff0c;可以实现对图像实现缩放。 第一种方法是调用cv2.resize()函数实现&#xff0c;相关学习链接为&#xff1a; python学opencv|读取图像&#xff08;三&#xff09;放大和缩小图像_python opencv 读取图…

rk3568 , buildroot , qt ,使用sqlite, 动态库, 静态库

问题说明&#xff1a; 客户反馈 &#xff0c;buildroot 系统 &#xff0c;使用qt 使用sqlite &#xff0c;有报错&#xff0c;无法使用sqlite. 测试情况说明&#xff1a; 我自己测试&#xff0c;发现&#xff0c; buildroot 自己默认就是 使能了 sqlite 的。 是否解决说明&…

Windows图形界面(GUI)-QT-C/C++ - Qt图形绘制详解

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 Qt绘图基础 QPainter概述 基本工作流程 绘图事件系统 paintEvent事件 重绘机制 文字绘制技术 基本文字绘制 ​编辑 高级文字效果 基本图形绘制 线条绘制 ​编辑 形状绘制 …

OpenArk64:Windows 系统分析与逆向工程工具详解

引言 在 Windows 系统的底层操作和逆向工程领域&#xff0c;OpenArk 是一款备受推崇的开源工具集。而 OpenArk64.exe 是 OpenArk 工具的 64 位版本&#xff0c;专门用于 64 位 Windows 系统。它提供了强大的功能&#xff0c;帮助用户深入分析系统内核、进程、文件、注册表等&a…

浅谈计算机网络02 | SDN控制平面

计算机网络控制平面 一、现代计算机网络控制平面概述1.1 与数据平面、管理平面的关系1.2 控制平面的发展历程 二、控制平面的关键技术剖析2.1 网络层协议2.1.1 OSPF协议2.1.2 BGP协议 2.2 SDN控制平面技术2.2.1 SDN架构与原理2.2.2 OpenFlow协议2.2.3 SDN控制器 一、现代计算机…

【C++】PP5015 [NOIP2018 普及组] 标题统计

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示数据规模与约定 &#x1f4af;方法分析方法1&#xff1a;我的做法实…

从玩具到工业控制--51单片机的跨界传奇【2】

咱们在上一篇博客里面讲解了什么是单片机《单片机入门》&#xff0c;让大家对单片机有了初步的了解。我们今天继续讲解一些有关单片机的知识&#xff0c;顺便也讲解一下我们单片机用到的C语言知识。如果你对C语言还不太了解的话&#xff0c;可以看看博主的C语言专栏哟&#xff…

线程池面试题目集合

最近面试中总是问到ThreadPoolExecutor类相关问题&#xff0c;在此集中整理下。 问题1.ThreadPoolExecutor的关键参数是哪些&#xff0c;任务添加过程中&#xff0c;内部线程是怎样构建的&#xff1f; a)任务到达时&#xff0c;线程池数目小于核心线程数corePoolSize&#xff0…

程序员独立开发竞品分析:确定网站使用什么建站系统

要确定一个网站使用的建站系统&#xff0c;可以通过以下几种方法尝试分析&#xff1a; 查看页面源代码&#xff1a; 打开网站&#xff0c;右键点击页面并选择“查看页面源代码”。在代码中查找一些常见的建站系统标志&#xff0c;例如&#xff1a; WordPress 的迹象&#xff1a…

基于Media+Unity的手部位姿三维位姿估计

使用mediapipe Unity 手部位姿三维位姿估计 参考文章 基于Mediapipe的姿势识别并同步到Unity人体模型中 MediapipeUnity3d实现虚拟手_unity mediapipe-CSDN博客 需求 我的需求就是快速、准确的跟踪手部位姿并实现一个三维显示。 主要思路 搭建mdeiapipe系统&#xff0c…