首先,如果电脑中存在已经安装过旧版本的docker需要先进行卸载
docker中存在好几个依赖包,没卸载干净会影响下一次的docker安装
卸载流程如下
# 停止并禁用Docker服务
sudo systemctl stop docker
sudo systemctl disable docker
# 移除Docker CE及相关组件(如果使用的是yum)
sudo yum remove docker-ce docker-ce-cli containerd.io
# 如果使用的是dnf(CentOS 8及更高版本可能使用dnf而非yum)
sudo dnf remove docker-ce docker-ce-cli containerd.io
# 清理残留数据和配置文件(根据系统实际情况可选)
sudo rm -rf /var/lib/docker
# 如果安装了docker-compose,则需要单独卸载
sudo yum remove docker-compose # 对于使用yum的系统
sudo dnf remove docker-compose # 对于使用dnf的系统
# 更新缓存并移除不再需要的软件包
sudo yum clean all # 对于使用yum的系统
sudo dnf autoremove # 对于使用dnf的系统
Docker引擎安装
卸载完毕后就可以打开Docker的官网进行安装,Docker有两种版本,社区版(Docker Engine)和专业版我们打开官网
Docker Docs
点击Docker Engine的Install进入选择Linux系统页面
上图中即代表了目前支持安装docker的Linux系统,目前CentOS中仅支持CentOS6、CentOS7、CentOS8。
如果前面已经卸载干净就可以忽略官网教程第一步卸载了,可以直接进入到安装软件包(提供实用程序)并设置存储库。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
然后就是安装最新版本的引擎
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装引擎大概会需要几分钟的安装时间,安装成功后就可以进入启动阶段了
sudo systemctl start docker
通过语句查询目前的docker版本
docker -v
可以通过查看进程或者是查看启动状态来查询目前docker的启动情况
通过查看进程:
ps aux |grep docker
如果启动正常会显示以下代码
通过查看启动状态:
sudo systemctl status docker
启动正常会显示以下代码
接下来介绍设置开机自启动docker,避免每一次重启动需要手动启动docker
sudo systemctl enable docker.service
确认Docker服务已被设置为开机启动状态:
systemctl list-unit-files | grep docker.service
如果输出结果中显示的是 docker.service enabled,则表示Docker服务将在系统启动时自动运行。
安装阿里云镜像
安装阿里云镜像是为了加速我们在安装其他镜像时的下载速度,还是很有必要的
打开阿里云官网链接阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台,找到阿里云的镜像服务
打管理控制台,可以看到镜像加速器,我们选择CentOS版本安装官网代码教程安装即可
sudo mkdir -p /etc/docker # 创建一个名为/etc/docker的目录,用于存放Docker的配置文件
sudo tee /etc/docker/daemon.json <<-'EOF' # 使用tee命令将输入重定向到/etc/docker/daemon.json文件中,并以EOF作为结束标记
{
"registry-mirrors": ["https://kfejf8a4.mirror.aliyuncs.com"] # 配置阿里云镜像加速器作为Docker的镜像仓库
}
EOF
sudo systemctl daemon-reload # 重新加载systemd的配置文件,以使对Docker配置的更改生效
sudo systemctl restart docker # 重启Docker服务,以使新的配置生效
这样阿里云镜像加速器就安装完成了!耶( •̀ ω •́ )y
接下来可以去Docker Hub上下载镜像了
---------------------------------------------------------分割线---------------------------------------------------------
安装过程中可能遇见的问题
笔者在安装阿里云镜像后的重启docker时发生了报错
Job for docker.service failed because start of the service was attempted too often. See "systemctl status docker.service" and "journalctl -xe" for details. To force a start use "systemctl reset-failed docker.service" followed by "systemctl start docker.service" again.(docker.service的作业失败,因为尝试启动服务的频率太高。有关详细信息,请参阅“systemctl-status-docker.service”和“journalctl-xe”。要强制启动,请再次使用“systemctl reset failed docker.service”,然后再使用“systemctl start docker.server”。)
当时头疼了很久,建议按照以下流程来排除错误
1.查看Docker服务当前状态和详细错误信息:
systemctl status docker.service
这将显示Docker服务的具体状态以及失败原因。
2.检查系统日志以获取更详细的错误报告:
journalctl -xe
该命令会展示最近的日志条目,帮助您找到导致Docker无法启动的错误消息或异常情况。
3.根据错误信息,可能的原因包括但不限于:
- 系统资源不足(如内存、磁盘空间等)。
- Docker配置文件错误(位于 /etc/docker/daemon.json)。
- 内核模块未正确加载(例如 overlay2 文件系统驱动)。
- 依赖的服务未运行或配置不正确(如 containerd)。
- 权限问题或文件夹权限设置不正确(如 /var/lib/docker)。
- 如果发现是配置问题,请根据错误提示修复相应的配置文件。
- 若是资源限制,则尝试释放更多资源给Docker使用。
- 如果内核模块没有加载,请确保已安装并启用必要的内核模块。
- 对于依赖服务的问题,请确保所有相关服务都处于正常运行状态。
- 确保内核模块已加载: Docker需要某些特定内核模块才能正常运行,例如 overlay2 或 br_netfilter。检查这些模块是否已加载:
lsmod | grep overlay lsmod | grep br_netfilter
- 检查磁盘空间和内存使用情况: 确保有足够的磁盘空间存放Docker数据目录 /var/lib/docker,并且系统的内存资源充足。
- 检查Docker配置文件 /etc/docker/daemon.json 是否有误。
- 如果之前安装过其他版本的Docker,请确认已卸载干净,并确保没有冲突的服务或配置遗留。
对于依赖性问题,确认containerd服务正常运行:systemctl status containerd
5.若有必要,可以尝试重新安装Docker,并确保其依赖项正确安装和配置。
(虽然很不想承 认但是重装确实是最快的解决办法,我哭死)
笔者最后弄了半天发现是在安装阿里云镜像时的设置docker文件时内容错误导致无法重启而引发的报错,错误格式如下
修改成以下格式
再重新加载systemd守护进程的配置文件,使其能够识别对服务(如Docker)配置所做的任何更改 ,最后再重启docker就好了
sudo systemctl daemon-reload #重新加载
sudo systemctl restart docker #重新启动
以上内容仅供参考,为记录笔者的学习过程,如有错误恳请指正,希望能够为大家排排雷~