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

CentOS上安装Docker

文章目录

    • 前期准备
      • 系统要求
      • 卸载旧版本的docker
    • 安装方法
      • 使用仓库安装
        • 设置仓库
        • 安装Docker引擎
        • 更新Docker引擎
      • 从软件包安装
        • 安装Docker引擎
        • 更新Docker引擎
      • 使用便捷脚本安装
    • Docker启动和停止
      • 启动和验证
        • 启动Docker
        • 验证Docker Engine是否正确安装
      • 停止
    • 卸载Docker引擎

前期准备

系统要求

  • CentOS版本:CentOS 7、CentOS Stream 8或CentOS Stream 9,在这里我们用的是CentOS Stream 9

  • centos-extras仓库必须是激活的。默认情况下,该仓库是激活的,可验证如下:

    使用命令vim /etc/yum.repos.d/centos-addons.repo查看yum仓库的配置文件,查看[extras-common]仓库下面对应的enabled的值,如果是1,则该仓库是激活状态,如果是0,则该仓库是非激活状态,需要将0改为1,设置为激活状态,如下图所示:

    在这里插入图片描述

  • 推荐使用overlay2存储驱动,大部分的Linux系统都支持

卸载旧版本的docker

虽然我们目前用的虚拟机操作系统CentOS Stream 9没有安装过Docker,但是为了完整性,也有可能有些人是安装过旧版本的Docker,所以还是有必要加上这块内容。早期版本的Docker被称为dockerdocker-engine,如果之前安装过,执行下面的命令将它们以及相关的依赖项卸载掉:

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

在这里插入图片描述

安装方法

根据不同的需求,安装Docker引擎有几种不同的方式:

  • 比较推荐的方法是设置Docker的仓库并从中获取安装包并安装,这是比较简单的,也便于后续的升级。

  • 通过下载RPM包手动安装,并完全手动管理升级。这对于在无法联网的环境中安装Docker等情况非常有用。

  • 在测试和开发环境,可以通过官方提供的安装脚本安装Docker

使用仓库安装

当你在新的主机上第一次安装Docker引擎之前,需要先设置好Docker仓库,之后就可以从这个仓库安装和升级Docker。

设置仓库

  1. 安装yum-utils包,它提供了yum-config-manager的功能,可以管理yum的配置

    sudo yum install -y yum-utils
    

    在这里插入图片描述

  2. 添加Docker仓库

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

    在这里插入图片描述

    可以看到yum仓库目录下多了一个docker仓库的配置文件

安装Docker引擎

可以选择安装最新版本或指定版本的Dokcer:

  • 安装最新版本的Docker Engine、containerd(容器服务)、Docker Compose

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

    直接执行上述命令可能会出现错误,该错误指出我们要安装的包跟系统中已经安装的包buildah有冲突,如下所示:

    在这里插入图片描述

    根据提示,在命令中添加--allowerasing参数,该参数指允许擦除已安装的软件包以解决依赖关系和包冲突问题:

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

    在这里插入图片描述

    接下来会提示是否接受GPG密钥,需要验证其指纹是否为060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果是就可以。这里一般也不会有说明问题,直接输入y继续安装就可以

    在这里插入图片描述

    安装成功

    在这里插入图片描述

  • 安装指定版本的Docker

    1. 列出仓库中可用的Docker版本

      yum list docker-ce --showduplicates
      

      在这里插入图片描述

    2. 安装指定版本

      通过完全限定包名(包名docker-ce加上版本号)可以安装指定版本的Docker,包名和版本号之间用-连接,版本号为上图红色框中的字符串,例如:docker-ce-20.10.17。安装命令如下:

      sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-compose-plugin
      

更新Docker引擎

更新Docker Engine时,只需按照上面的安装说明,选择想要的版本进行安装就可以了。

从软件包安装

如果你无法使用Docker的存储库来安装Docker,你可以根据你的CentOS系统的发行版下载对应的.rpm文件并手动安装。以后每次需要升级Docker引擎时,都需要下载新文件进行安装升级。

安装Docker引擎

  1. 访问https://download.docker.com/linux/centos/,选择CentOS的版本(我这里是9),然后进入到x86_64/stable/Packages/目录下,下载你想要安装的Docker版本对应的.rpm文件。

    在这里插入图片描述

  2. 安装Docker Engine

    sudo yum install /path/to/package.rpm
    

更新Docker引擎

更新Docker Engine时,需要下载新版本的软件包文件,将yum install替换为yum upgrade并使用新的软件包文件,其他步骤跟上面的一样

sudo yum upgrade /path/to/new_package.rpm

使用便捷脚本安装

Docker在get.docker.com提供了一个方便的脚本,用于快速、非交互式地将Docker安装到开发环境,但是不建议在生产环境中使用这个脚本安装。

你可以使用DRY_RUN=1选项运行这个脚本,这样可以在真正运行之前看看这个脚本在安装过程中会执行哪些步骤:

curl -fsSL https://get.docker.com -o get-docker.sh
DRY_RUN=1 sh ./get-docker.sh

在这里插入图片描述

因为我们已经安装了Docker,所以输出中会有相应的提示。根据这个提示信息,我们了解到,如果系统中已经安装了Docker,那么使用这个脚本安装或更新Docker会导致一些问题,除非系统中的Docker也是使用这个脚本安装的。也就是说如果当前系统已经安装了Docker并且是用这个脚本安装的,那么可以再次使用这个脚本更新,否则可能会出现无法预料的问题。

下面的命令从get.docker.com下载脚本并运行这个脚本,安装最新稳定版的Docker:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Docker启动和停止

启动和验证

启动Docker

sudo systemctl start docker

在这里插入图片描述

可以看到Docker服务已经启动运行了。

验证Docker Engine是否正确安装

通过运行hello-world镜像验证Docker Engine是否正确安装:

sudo docker run hello-world

在这里插入图片描述

输出上面的信息,说明我们正确安装了Docker,并且可以正常地运行和工作了。

停止

我们先用下面的命令尝试停止Docker看看:

sudo systemctl stop docker

在这里插入图片描述

可以看到输出一条警告信息:

Warning: Stopping docker.service, but it can still be activated by:
  docker.socket

意思是说docker.service已经停止了,但是它仍然可以通过docker.socket被激活。查看docker的状态,确实是属于非活跃的状态。另外注意到下面有绿色圆点的那一行TriggeredBy: ● docker.socket,表示通过docker.socket触发,跟上面的警告信息其实是同一个意思。而docker.socket是用于和docker client进行通信的文件,所以推测当docker client重新发起请求,也就是我们再执行docker命令时,docker服务又会被激活,我们看看是不是这么回事。

先执行一个docker命令:

# 查看本机拉取的镜像,可以看到我们之前拉取过的hello-world的镜像
sudo docker images

在这里插入图片描述

再查看docker的状态:

在这里插入图片描述

可以看到docker服务又变成活跃状态了,说明当客户端有请求时会连接docker.socket,这个时候docker就会被docker.socket触发激活来响应客户端的请求。

那么如果要完全停止docker,不想它被重新激活应该怎么做,其实只要把docker.servicedocker.socket都停掉就可以了:

sudo systemctl stop docker.service docker.socket

在这里插入图片描述

从上图可以看到docker状态为非活跃状态,docker.socket前面的圆点也不是绿色的了,说明它也被停止了,执行命令sudo docker images后输出的信息也表明,docker已经停止运行无法连接了。

卸载Docker引擎

  1. 卸载Docker Engine、CLI、Containerd和Docker Compose软件包:

    sudo yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
  2. 在主机上的镜像、容器、卷和自定义的配置文件等不会自动删除,执行下面的命令删除所有的镜像、容器和卷,任何编辑过的配置文件也必须手动删除:

    sudo rm -rf /var/lib/docker
    sudo rm -rf /var/lib/containerd
    

📌备注:本文主要参考官方的docker安装文档

相关文章:

  • 一文搞定IDEA中SpringBoot项目环境的热部署
  • Java运算符
  • HIS -- 医院信息管理系统业务流程
  • 【精讲】后台项目 采用vue2框架 完整版内含详细注释 1
  • UVA 10271 佳佳的筷子 Chopsticks [DP的基本运用]
  • 【计算机视觉】尺度不变特征变换(SIFT)
  • 计算机网络基础概念
  • Scala系列一:变量和数据类型
  • ROS从入门到精通3-4:urdf集成Gazebo联合仿真
  • 2、操作系统基本原理
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • [Java]快速入门二叉树,手撕相关面试题
  • 输出UE当前所有UObject的基础信息
  • 【MicroPython ESP32】1.8“tft ST7735带中文驱动显示示例
  • QT提取数据库内容,根据不同字段要求显示不同颜色
  • 【译】JS基础算法脚本:字符串结尾
  • 【刷算法】求1+2+3+...+n
  • Centos6.8 使用rpm安装mysql5.7
  • Flex布局到底解决了什么问题
  • gops —— Go 程序诊断分析工具
  • HashMap ConcurrentHashMap
  • JSONP原理
  • MySQL主从复制读写分离及奇怪的问题
  • Node 版本管理
  • SpringBoot 实战 (三) | 配置文件详解
  • 飞驰在Mesos的涡轮引擎上
  • 观察者模式实现非直接耦合
  • 坑!为什么View.startAnimation不起作用?
  • 目录与文件属性:编写ls
  • 漂亮刷新控件-iOS
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 微信开源mars源码分析1—上层samples分析
  • 物联网链路协议
  • 原生 js 实现移动端 Touch 滑动反弹
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (145)光线追踪距离场柔和阴影
  • (6)添加vue-cookie
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (接口自动化)Python3操作MySQL数据库
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (转)重识new
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net2005怎么读string形的xml,不是xml文件。
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • []串口通信 零星笔记