linux CentOs 安装docker 推荐生产环境使用

目录

1. 在CentOs上安装docker所需的系统环境

2. 卸载旧版本

2.1 查看是否已安装docker

2.2 卸载已安装的docker

3. 安装方式

3.1 使用rpm存储库安装(推荐使用该方法)

3.2 从包中安装

4. 开始docker


1. 在CentOs上安装docker所需的系统环境

需要以下CentOS版本之一的维护版本:

  • CentOs 7 
  • CentOs 8(stream)
  • CentOs 9(stream)

2. 卸载旧版本

2.1 查看是否已安装docker

执行docker命令:

docker -v

如果安装了就会输出docker的版本信息,例如:

Docker version 20.10.21, build baeda1f

如果没有安装docker,则可能会出现:

-bash: docker: command not found

以上是没有找到docker命令,代表没有安装docker

2.2 卸载已安装的docker

先暂停docker服务

systemctl stop docker

卸载Docker软件包:

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

以上卸载时,如果提示:

Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-client
No Match for argument: docker-client-latest
No Match for argument: docker-common
No Match for argument: docker-latest
No Match for argument: docker-latest-logrotate
No Match for argument: docker-logrotate
No Match for argument: docker-engine
No Packages marked for removal

说明并没有找到这些包并删除,那么我们会发现,docker已经存在,没有卸载成功

这时候我们可以尝试使用以下命令查找已安装的docker相关包:

yum list installed | grep docker

这个命令将列出所有已安装的包,并通过 grep 过滤出包含 "docker" 的包。如果这个命令返回了结果,那么你可以使用返回的包名来卸载 Docker

而以上则是返回了相关的docker包,我们将这些包进行卸载:

sudo yum remove containerd.io.x86_64 docker-buildx-plugin.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64 docker-ce-rootless-extras.x86_64 docker-compose-plugin.x86_64

tip:以上命令,除了前面的"sudo yum remove"是固定的,后面的包则需要根据实际的情况拼接,以上只是博主的内容,切勿直接复制使用,可能会发生错误或卸载不完整!

在卸载过程中,会提示:

Is this ok [y/N]: 

我们输入"y"按下回车键 代表同意即可

卸载运行之后会出现:

Complete!

就代表卸载完成了

3. 安装方式

可以用不同的方式安装Docker:

  1. 设置Docker的存储库并从中进行安装,以便于安装和升级任务。这是推荐的方法
  2. 可以下载RPM包并手动安装,也可以完全手动管理升级。这在一些情况下很有用,比如在无法访问互联网的气隙系统上安装Docker

3.1 使用rpm存储库安装(推荐使用该方法)

在新主机上首次安装Docker之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker

设置存储库
安装yum-utils包(它提供yum-config-manager实用程序)并设置存储库

运行以下命令:

sudo yum install -y yum-utils

出现下面这样代表成功:

接着运行以下命令:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

出现以下代表成功:

这里我们安装的是docker的最新版本:

运行以下命令:

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

当运行中提示:Is this ok [y/d/N]

我们输入:"y" 点击回车键同意即可继续安装

如果提示接受GPG密钥,验证指纹是否匹配060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果匹配,则接受(还会出现一次 Is this ok [y/N] 我们继续输入"y" 按下回车键)。

这个命令安装Docker,但不启动Docker。它还创建了一个docker组,但是,默认情况下它不会向该组添加任何用户。

最后提示:Complete! 则代表安装结束

这时候我们再查看一次docker版本,则会显示docker的具体版本:

docker -v

显示:

Docker version 25.0.3, build 4debf41

3.2 从包中安装

如果你不能使用Docker的rpm库来安装Docker,你可以为你的版本下载rpm文件并手动安装

首先,我们先检查一下自己的CentOs版本是多少,输入以下命令:

lsb_release -a

我这边输出了:

LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.9.2009 (Core)
Release:	7.9.2009
Codename:	Core

转到 https://download.docker.com/linux/centos/ 并选择您的CentOS版本。然后浏览到x86_64/stable/Packages/,下载需要安装的Docker版本的.rpm文件。

我们访问以上链接,会发现,会让我们选择自己的版本,我这里是7.9,所以我选择7.9

该下载页,有很多的包,每个包的意思不同,先了解一下每个包是什么

包名解释
containerd.io这是 containerd 的 RPM 包。containerd 是一个容器运行时,它提供了底层的容器管理功能,如创建、启动、停止容器等。它是 Docker 和其他容器技术的底层组件
docker-buildx-plugin这是 Docker Buildx 的插件包。Docker Buildx 是一个扩展的构建工具,它支持使用 BuildKit 来构建多平台的 Docker 镜像
docker-ce这是 Docker 的社区版 RPM 包,提供了完整的容器化平台。它包括了 Docker 守护进程、Docker 命令行接口以及其他相关的工具和组件
docker-ce-cli这是 Docker 的命令行客户端的 RPM 包。它用于与 Docker 守护程序进行交互,执行如构建、运行、管理容器等操作
docker-ce-rootless-extras这是为 rootless 容器模式提供的额外工具和配置的 RPM 包。rootless 模式允许普通用户在没有 root 权限的情况下运行容器
docker-ce-selinux这是 Docker 的 SELinux 策略文件的 RPM 包。SELinux 是一个 Linux 内核的安全模块,用于提供强制访问控制。该包为 Docker 容器提供了 SELinux 策略,以增强系统的安全性
docker-compose-plugin这是 Docker Compose 的插件包。Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过该插件,用户可以使用 docker compose 命令来管理由 Compose 文件定义的应用程序
docker-scan-plugin这是 Docker Scan 的插件包。Docker Scan 是一个用于扫描 Docker 镜像中的安全漏洞的工具

我们能看到,这些包都有很多版本,老版本不建议使用,尽量使用稳定版本或最新版本。

这些包后面都有发布时间,所以我们可以根据包名的数字(例如:1.6.9是比1.6.8更高的),或者发布时间来根据最新版。

若不想使用最新版,防止不够稳定或还存在bug,我们可以往前推移一两个版本,这里我们示范,就使用最新的版本(建议按照实际情况下载)。

安装docker,运行以下命令:

sudo yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.6.9-3.1.el7.x86_64.rpm
sudo yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-buildx-plugin-0.12.1-1.el7.x86_64.rpm
sudo yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-25.0.2-1.el7.x86_64.rpm
sudo yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-cli-25.0.3-1.el7.x86_64.rpm
sudo yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-rootless-extras-25.0.3-1.el7.x86_64.rpm
sudo yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
sudo yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-compose-plugin-2.6.0-3.el7.x86_64.rpm
sudo yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-scan-plugin-0.9.0-3.el7.x86_64.rpm

运行之后,会进入下载,如果提示了:

Is this ok [y/d/N]

输入"y"按下回车键即可

 这时候我们再查看一次docker版本,则会显示docker的具体版本:

docker -v

显示:

Docker version 25.0.3, build 4debf41

4. 开始docker

输入一段简单的docker命令:

docker ps

以上命令是查看docker正在运行的容器

但是很不理想,会提示:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

意思为 docker守护进程并没有运行

简单的说,是docker服务没有启动,我们需要启动docker服务

可以先检查docker服务状态:

systemctl status docker

输出的内容中,会看到这么一段:

Active: inactive (dead)

该程序是不活跃的,代表是没有启动该服务

启动docker,运行以下命令:

systemctl start docker

然后我们再查看docker的状态会发现输出是这样的:

Active: active (running)

提示该程序是活跃的,代表服务启动了

然后我们再返回查看docker的容器:

docker ps

会输出:

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

列出了容器的相关信息,但并没有正在运行的容器,是因为我们还没有创建并运行容器,所以这里确实是没有数据的

现在我们就已经成功安装并启动了Docker。

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

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

相关文章

数据结构-邻接链表

介绍 邻接矩阵是运用较多的一种储存图的方法,但如果一张网图边数较少,就会出现二维矩阵中大部分数据为0的情况,浪费储存空间 为了避免空间浪费,也可以采用数组与链表结合的方式来存储图 假设有这样一张图 我们可以先用一个数组…

C#中的Async的异常处理

在C#的代码编写中可以通过try/catch来捕获Exception。然而当调用Async方法时需要特别注意 private void Start() {try{TestVoid();}catch (Exception e){Debug.LogException(e);} }private async void TestVoid() {var t Task.Delay(1);await t;throw new Exception("Te…

测试环境搭建整套大数据系统(四:ubuntu22.4创建普通用户)

一:创建用户,修改密码,增加sudo权限。 useradd dolphinscheduler #输入密码 passwd dolphinscheduler # 配置 sudo 免密 sed -i $adolphinscheduler ALL(ALL) NOPASSWD: NOPASSWD: ALL /etc/sudoers sed -i s/Defaults requirett/#Defa…

实现一个python代码编辑器

代码编辑器采用了monacoEditor,一个现成的编辑器。网上有很多文档介绍和开源项目,但是怎么说呢,跟着做,可以实现一个网页编辑器,可以高亮python的语法,但是没有python的提示,找不到可以参考的&a…

ADO.NET和EF框架性能对比

ADO.NET和Entity Framework(EF)框架在性能上有一些不同。总体来说,ADO.NET通常比EF具有更高的性能,特别是在执行大量数据访问操作时。下面是一些关于它们性能差异的要点: 数据库操作方式: ADO.NET&#xf…

C++ 八数码问题理解 `IDA*` 算法原则:及时止损,缘尽即散

1.前言 八数码是典型的状态搜索案例。如字符串转换问题、密码锁问题都是状态搜索问题。 状态搜索问题指由一种状态转换到到最终状态,求解中间需要经过多少步转换,或者说最小需要转换多少步,或者说有多少种转换方案。本文和大家聊聊八数码问…

使用哈希函数删除哈希值相同的文件

哈希函数及哈希值的定义 哈希函数是一种将任意长度的输入数据映射为固定长度的输出数据的函数。它通过对输入数据执行一系列复杂的数学运算,将数据转换为固定长度的唯一标识,这个唯一标识就是哈希值。 哈希函数的作用 数据唯一性: 对于不同的输入数据&…

Java面试题:volatile专题

王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 今天是《面霸的自我修养》第4篇文章,我们一起来看看面试中会问到哪些关于volatile的问题吧。数据来源: 大部分来自于各机构(Java之父,Java继父,某灵,某泡,某客)以及各博主整理文档…

Java程序中为什么要使用StringBuilder

遇到这个问题是来源于leetcode的一道题&#xff1a;字符串解码。其中的题解涉及字符串的操作使用的是StringBuilder&#xff0c;不是String。 class Solution {public String decodeString(String s) {StringBuilder res new StringBuilder();int multi 0;LinkedList<Int…

MR专题:体验Apple Vision Pro多元生态内容,拥抱MR供应链机遇

今天分享的是MR系列深度研究报告&#xff1a;《MR专题&#xff1a;体验Apple Vision Pro多元生态内容&#xff0c;拥抱MR供应链机遇》。 &#xff08;报告出品方&#xff1a;方正证券&#xff09; 报告共计&#xff1a;15页 来源&#xff1a;人工智能学派 Apple Vision Pro…

基因富集分析——GO/DO

DO&#xff08;Disease Ontology&#xff09;分析涉及多种具体的步骤和方法&#xff0c;下面是一些常见的DO分析步骤或方法&#xff1a; 1. 疾病分类和定义&#xff1a;分析DO中的疾病分类体系&#xff0c;理解不同疾病之间的关系和归类。这包括查看DO本体中的层次结构、疾病之…

本地TCP通讯(C++)

概要 利用TCP技术&#xff0c;实现本地ROS1和ROS2的通讯。 服务端代码 头文件 #include <ros/ros.h> #include "std_msgs/String.h" #include "std_msgs/Bool.h" #include <iostream> #include <cstring> #include <unistd.h>…

消息队列-RabbitMQ:workQueues—工作队列、消息应答机制、RabbitMQ 持久化、不公平分发(能者多劳)

4、Work Queues Work Queues— 工作队列 (又称任务队列) 的主要思想是避免立即执行资源密集型任务&#xff0c;而不得不等待它完成。我们把任务封装为消息并将其发送到队列&#xff0c;在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时&#xff0c;这些工作…

AVEC-为编译后的可执行程序添加资源

AVEvasionCraftOnline 一个在线免杀的web端程序&#xff0c;可以绕过常见杀软 项目地址&#xff1a;https://github.com/yutianqaq/AVEvasionCraftOnline AVEvasionCraftOnline - 小更新 sha256sum AVEvasionCraftOnline.jar AVEvasionCraftOnline-v1.1.zip 896387a21946b1…

vulnhub练习 DC-1复现及分析

一、搭建环境 1.工具 靶机&#xff1a;DC-1 192.168.200.17 攻击机&#xff1a;kali 192.168.200.13 2.注意 攻击机和靶机的网络连接方式要相同&#xff0c;另外DC-1的网络连接方式我这里采用NAT模式&#xff0c;是与kali的网络连接模式相同的&#xff08;当然亦可以选用桥…

前端使用QGIS工具生成地图

1 找到所需要地图的 json 数据 1.1 查找 json 数据的两个网址&#xff08;个人常用&#xff09; 1.1.1 DataV.GeoAtlas 网站 DataV.GeoAtlas 这个网站不能具体到县内包含的城镇分化&#xff0c;但是对于县级以上的地图数据&#xff0c;使用起来很方便。 1.1.2 POI数据 网站 …

创作无版权素材:解放创意的利器

title: 创作无版权素材&#xff1a;解放创意的利器 date: 2024/2/21 13:52:09 updated: 2024/2/21 13:52:09 tags: 无版权创作自由法律合规节省成本提升质量多样素材创意工具 在当今数字化时代&#xff0c;内容创作成为了一种非常重要的方式来传达信息和表达创意。 然而&#…

【在 Windows 系统上开发 Flutter 项目并将其发布到 Ubuntu 服务器】

在 Windows 系统上开发 Flutter 项目并将其发布到 Ubuntu 服务器上&#xff0c;按照以下步骤进行操作&#xff1a; 构建 Flutter Web 应用&#xff1a; 在 Windows 系统上&#xff0c;进入Flutter 项目目录&#xff0c;然后运行 flutter build web 命令来构建你的 Flutter Web …

常见锁策略以及CAS

目录 1.1乐观锁&悲观锁 1.2轻量级锁&重量级锁 1.3自旋锁&挂起等待锁 1.4互斥锁&读写锁 1.5可重入锁&不可重入锁 1.6公平锁&非公平锁 1.7synchronized的特点 2.CAS(Compare and swap) 2.1.是什么 2.2.基于CAS方式实现的线程安全优缺点 2.3.使用场景…

设计模式----工厂模式

工厂模式 工厂模式即建立创建对象的工厂&#xff0c;实现创建者和调用者分离。 简单工厂模式&#xff1a;该模式对对象创建管理方式最为简单&#xff0c;因为他简单的对不同类对象的创建进行了一层薄薄的封装。该模式通过向工厂传递类型来指定要创建的对象。 工厂方法模式&am…