Linux安装Docker教程(详解)

如果想要系统学习docker,建议进入官方文档中学习:docker官方文档

一. 基本概念

  • Docker Desktop 和 Docker Engine 有什么区别?

Docker Desktop for Linux 提供用户友好的图形界面,可简化容器和服务的管理。它包括 Docker Engine,因为这是为 Docker 容器提供支持的核心技术。适用于 Linux 的 Docker Desktop 还附带了 Docker Scout 和 Docker Extensions 等附加功能。

二. 删除旧版本(可选)

clike 复制代码
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

三. 开始安装

  1. 安装所需的软件包 yum-utils,device-mapper-persistent-data和lvm2
clike 复制代码
yum install -y yum-utils device-mapper-persistent-data lvm2

yum-utils:

yum-utils 是一组为 YUM(Yellowdog Updater Modified)包管理器提供额外功能的工具。它包括了多个实用程序,如 yum-config-manager,这个工具可以用来方便地添加和管理 YUM 软件源。需要使用 yum-config-manager 来设置 Docker 的官方仓库。

device-mapper-persistent-data:

这个软件包提供了支持设备映射器(device mapper)驱动的工具,特别是用于持久化数据的逻辑卷管理。Docker 使用 device mapper 作为存储驱动之一,用于管理容器的文件系统层。device-mapper-persistent-data 包含了必要的工具来处理这些底层的文件系统操作,确保容器的数据能够被正确且高效地管理。

lvm2:

LVM (Logical Volume Manager) 是 Linux 下的一种磁盘分区管理技术,允许创建、调整大小和管理磁盘分区,即逻辑卷。LVM 提供了灵活性,例如可以在不丢失数据的情况下调整分区大小。lvm2 包含了管理和配置 LVM 所需的命令行工具。Docker 可以利用 LVM 和 device mapper 驱动来更有效地管理容器的存储空间,特别是在需要频繁创建和删除容器的环境中。

报错请点击这里查看

  1. 更换docker镜像仓库 (三个任选其一)
clike 复制代码
# 官方源 (慢 不推荐)
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 阿里云 (推荐)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 清华大学源 (推荐)
sudo yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
  1. 安装docker
clike 复制代码
# 安装docker,docker-cli
sudo yum -y install docker-ce docker-ce-cli containerd.io 
  1. 配置docker加速 (现在配置阿里云容器镜像加速需要是阿里云设备,我是本地虚拟机,所以此处不使用阿里的镜像加速了)
clike 复制代码
vi /etc/docker/daemon.json
# 直接复制进去并保存 (2025.1.15最新可用源)
 {
  "registry-mirrors": [
    "https://docker.hpcloud.cloud",
    "https://docker.m.daocloud.io",
    "https://docker.unsee.tech",
    "https://docker.1panel.live",
    "http://mirrors.ustc.edu.cn",
    "https://docker.chenby.cn",
    "http://mirror.azure.cn",
    "https://dockerpull.org",
    "https://dockerhub.icu",
    "https://hub.rat.dev",
    "https://proxy.1panel.live",
    "https://docker.1panel.top",
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run",
    "https://docker.ketches.cn"
  ]
}
# 启动/重启docker
sudo systemctl daemon-reload  
#如果还没启动
sudo systemctl start docker
#如果已经启动
sudo systemctl restart docker

# 验证镜像加速是否修改 查看Registry Mirrors部分
sudo docker info

四. 启动和验证

clike 复制代码
# 启动docker 上一步启动过了就不用再重复执行
sudo systemctl start docker
# docker开机自启
systemctl enable docker
# 拉取测试镜像 验证
sudo docker pull hello-world
// 执行hello-world
sudo docker run hello-world

五. 问题总结

yum安装软件包时报错

root@localhost \~\]# yum install -y yum-utils device-mapper-persistent-data lvm2 Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7\&arch=x86_64\&repo=os\&infra=vag error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error" One of the configured repositories failed (Unknown), and yum doesn't have enough cached data to continue. At this point the only safe thing yum can do is fail. There are a few ways to work "fix" this: 1. Contact the upstream for the repository and get them to fix the problem. 2. Reconfigure the baseurl/etc. for the repository, to point to a working upstream. This is most often useful if you are using a newer distribution release than is supported by the repository (and the packages for the previous distribution release still work). 3. Run the command with the repository temporarily disabled yum --disablerepo= ... 4. Disable the repository permanently, so yum won't use it by default. Yum will then just ignore the repository until you permanently enable it again or use --enablerepo for temporary usage: yum-config-manager --disable or subscription-manager repos --disable= 5. Configure the failing repository to be skipped, if it is unavailable. Note that yum will try to contact the repo. when it runs most commands, so will have to try and fail each time (and thus. yum will be be much slower). If it is a very temporary problem though, this is often a nice compromise: yum-config-manager --save --setopt=.skip_if_unavailable=true Cannot find a valid baseurl for repo: base/7/x86_64

错误原因:

centos7已停止运营,已被归档,需要更换yum源

解决方案:更换为阿里源或其他国内源

clike 复制代码
cd /etc/yum.repos.d
# 备份原有的源
cp CentOS-Base.repo CentOS-Base.repo.back
#下载国内源的 YUM 配置文件 (本文采用阿里源,需要其他可自行百度)
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 如果没有wget 可以使用curl命令
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清理 YUM 缓存
sudo yum clean all
sudo yum makecache
# 验证新源是否可用 会看到都是阿里的源
sudo yum repolist
相关推荐
Hello World . .几秒前
Linux:软件编程
linux·运维·服务器·vim
人间打气筒(Ada)31 分钟前
k8s:CNI网络插件flannel与calico
linux·云原生·容器·kubernetes·云计算·k8s
老师用之于民41 分钟前
【DAY21】Linux软件编程基础&Shell 命令、脚本及系统管理实操
linux·运维·chrome·经验分享·笔记·ubuntu
路由侠内网穿透.44 分钟前
本地部署代码托管解决方案 Gitea 并实现外部访问( Windows 版本)
运维·服务器·网络协议·gitea
serve the people1 小时前
python环境搭建 (十三) tenacity重试库
服务器·python·php
jake don1 小时前
GPU服务器搭建大模型指南
服务器·人工智能
江畔何人初2 小时前
pod的内部结构
linux·运维·云原生·容器·kubernetes
不做无法实现的梦~2 小时前
PX4编译环境配置和qgc配置安装教程(2)
linux·stm32
齐鲁大虾2 小时前
Linux下用什么编程语言方便开发B/S架构程序
linux·运维·架构
范纹杉想快点毕业2 小时前
状态机设计与嵌入式系统开发完整指南从面向过程到面向对象,从理论到实践的全面解析
linux·服务器·数据库·c++·算法·mongodb·mfc