CentOS 7.9下安装Docker
一、安装docker前的准备工作
操作系统版本为centos 7.9,内核版本需要在3.10以上,需要保障能够连通互联网,为了避免安装过程中出现网络异常建议关闭linux的防火墙(生产环境下不要关闭防火墙,可根据实际情况设置防火墙出入站规则)。
#查看内核版本
sudo uname -r
#查看系统版本
sudo cat /etc/redhat-release
#关闭防火墙
sudo systemctl stop firewalld
#禁用防火墙开机自启
sudo systemctl disable firewalld
ping www.baidu.com
虚拟机要处于联网的状态
首先卸载旧版本的Docker
sudo yum -y remove docker docker-common container-selinux
可能还要卸载旧版本的docker-selinux包,这个包与官方的docker-engine包相冲突了
sudo yum -y remove docker-selinux
注意旧版本docker中的镜像等内容都存放在/var/lib/docker中,没有被删除,所以卸载只是卸载了旧版本的docker,本地的docker内容并没有被删除。
二、开始安装docker
1、更新系统
yum -y update
在执行到最后的时候报错了
这个报错解决如下:
这里的报错,我查了一下其他文献是仓库配置文件有问题,我做了一下操作。
[root@localhost yum.repos.d]# mv /etc/yum.repos.d /etc/yum.repos.d.backup [root@localhost yum.repos.d]# mkdir /etc/yum.repos.d [root@localhost yum.repos.d]# yum install -y wget 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile There are no enabled repos. Run "yum repolist all" to see the repos you have. To enable Red Hat Subscription Management repositories: subscription-manager repos --enable <repo> To enable custom repositories: yum-config-manager --enable <repo>
mv /etc/yum.repos.d /etc/yum.repos.d.backup
:这行命令将原有的/etc/yum.repos.d
目录重命名为/etc/yum.repos.d.backup
。这意味着你备份了所有现有的 YUM 仓库配置文件。这样做通常是为了安全起见,以防在修改或替换现有仓库配置时出现问题。
mkdir /etc/yum.repos.d
:接下来,你创建了一个新的空目录/etc/yum.repos.d
。YUM 使用这个目录来查找.repo
文件,这些文件定义了软件仓库的位置和其它属性。由于你是刚创建的空目录,此时没有任何有效的仓库配置,因此你暂时无法通过 YUM 安装任何软件包,除非你添加至少一个有效的.repo
文件。
yum install -y wget
:这条命令尝试使用 YUM 来安装wget
工具。但由于你刚刚清空了/etc/yum.repos.d/
目录,没有配置任何有效的仓库源,YUM 可能无法找到并安装wget
或任何其他软件包,除非你已经在此之前配置好了至少一个有效的 YUM 仓库源。接着执行以下命令
配置 CentOS 操作系统的 YUM 软件仓库源,具体来说是从阿里云的镜像站下载一个 CentOS 7 的基础仓库配置文件,并保存到
/etc/yum.repos.d/
目录下,命名为CentOS-Base.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget
:这是一个在命令行界面中用于从网络下载文件的工具。
-O /etc/yum.repos.d/CentOS-Base.repo
:这是wget
的一个选项,用来指定下载文件的输出路径和文件名。在这个例子中,下载的文件会被保存为/etc/yum.repos.d/CentOS-Base.repo
。
http://mirrors.aliyun.com/repo/Centos-7.repo
:这是要下载的 CentOS 7 基础仓库配置文件的URL地址。这个文件包含了指向阿里云提供的 CentOS 7 软件仓库的配置信息,包括仓库的位置、优先级等设置。执行完这条命令后,你的 CentOS 系统就会使用阿里云提供的软件仓库作为默认的 yum 源。这样做通常可以加快软件包的下载速度,特别是当你所在的地区访问国际互联网的速度较慢时,使用国内的镜像源(如阿里云)能够显著提高软件包的下载效率和稳定性。
执行结果如下:
清理 YUM 缓存
yum clean all
然后充新从所有启用的仓库中下载最新的元数据(metadata)并将其存储在本地缓存中,来加快后续的软件包查询和安装速度。
yum makecache
执行结果如下
然后重新执行
yum -y update
OK,报错解决了
2、安装工具包并设置仓库。
在安装Docker之前,我们需要安装一些必要的依赖包,以确保Docker正常运行。执行以下命令安装这些依赖:
[root@localhost yum.repos.d]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
软件包 yum-utils-1.1.31-54.el7_8.noarch 已安装并且是最新版本
软件包 device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64 已安装并且是最新版本
软件包 7:lvm2-2.02.187-6.el7_9.5.x86_64 已安装并且是最新版本
无须任何处理
我这里在写文章之前已经安装过了,所以显示这样,你们正常执行就行
设置yum仓库
[root@localhost yum.repos.d]# sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror, langpacks
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
sudo
:以超级用户权限运行命令,因为修改系统级的配置文件需要管理员权限。
yum-config-manager
:YUM 配置管理工具,用来添加、删除或修改 YUM 仓库配置。--add-repo
:该选项告诉yum-config-manager
添加一个新的仓库配置。http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
:这是你要添加的仓库配置文件的 URL。在这个例子中,它是 Docker CE 在阿里云上的 CentOS 源。
3、开始安装
sudo yum install docker-ce docker-ce-cli containerd.io
安装完成
启动docker,和设置开机自动化启动
[root@localhost yum.repos.d]# sudo systemctl start docker
[root@localhost yum.repos.d]# sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost yum.repos.d]# sudo docker version
Client: Docker Engine - Community
Version: 26.1.4
API version: 1.45
Go version: go1.21.11
Git commit: 5650f9b
Built: Wed Jun 5 11:32:04 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 26.1.4
API version: 1.45 (minimum version 1.24)
Go version: go1.21.11
Git commit: de5c9cf
Built: Wed Jun 5 11:31:02 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.33
GitCommit: d2d58213f83a351ca8f528a95fbd145f5654e957
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
配置镜像文件,执行即可
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",
"https://mirrors.tuna.tsinghua.edu.cn/docker-ce",
"http://hub-mirror.c.163.com",
"https://ufaad1ze.mirror.aliyuncs.com",
"https://mirror.ccs.tencentyun.com",
"https://www.daocloud.io/mirror",
"https://docker.nju.edu.cn"
]
}
EOF
重新启动docker
[root@localhost yum.repos.d]# sudo systemctl daemon-reload
[root@localhost yum.repos.d]# sudo systemctl restart docker
[root@localhost yum.repos.d]# sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since 五 2025-01-17 18:12:55 CST; 12s ago
Docs: https://docs.docker.com
Main PID: 67171 (dockerd)
Tasks: 7
Memory: 28.8M
CGroup: /system.slice/docker.service
└─67171 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
1月 17 18:12:55 192.168.239.128 systemd[1]: Starting Docker Application Container Engine...
1月 17 18:12:55 192.168.239.128 dockerd[67171]: time="2025-01-17T18:12:55.393245804+08:00" level=info msg="Starting up"
1月 17 18:12:55 192.168.239.128 dockerd[67171]: time="2025-01-17T18:12:55.411127925+08:00" level=info msg="[graphdriver] using prior storage driver: overlay2"
1月 17 18:12:55 192.168.239.128 dockerd[67171]: time="2025-01-17T18:12:55.411214377+08:00" level=info msg="Loading containers: start."
1月 17 18:12:55 192.168.239.128 dockerd[67171]: time="2025-01-17T18:12:55.462374161+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17...IP address"
1月 17 18:12:55 192.168.239.128 dockerd[67171]: time="2025-01-17T18:12:55.481304501+08:00" level=info msg="Loading containers: done."
1月 17 18:12:55 192.168.239.128 dockerd[67171]: time="2025-01-17T18:12:55.489925863+08:00" level=info msg="Docker daemon" commit=de5c9cf containerd-snapshotter=false sto...sion=26.1.4
1月 17 18:12:55 192.168.239.128 dockerd[67171]: time="2025-01-17T18:12:55.489966283+08:00" level=info msg="Daemon has completed initialization"
1月 17 18:12:55 192.168.239.128 dockerd[67171]: time="2025-01-17T18:12:55.500859234+08:00" level=info msg="API listen on /run/docker.sock"
1月 17 18:12:55 192.168.239.128 systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.