centos安装docker
由于直接在虚拟机里的终端
连接xshell
添加用户组
如果当前用户(例如 user 用户)不在 sudoers 文件中,将无法使用 sudo 命令。你需要以 root 用户身份将该用户添加到 sudoers 文件中。以下是解决方法的步骤:
使用
su命令切换到root用户
你需要以root用户身份登录或者切换到root用户,系统会提示你输入root用户的密码。1
su -
添加用户到
sudoers文件
使用visudo编辑/etc/sudoers文件:1
visudo
在文件中找到以下行:
1
2## Allow root to run any commands anywhere
root ALL=(ALL) ALL在其下方添加允许
centos用户使用sudo命令的配置:1
centos ALL=(ALL) ALL
保存并退出编辑器。使用
visudo编辑/etc/sudoers文件的好处在于,它会在保存前检查语法错误,避免保存错误的配置。使用
sudo权限
完成上述操作后,user用户应当已经具有sudo权限。切换至user用户,使用以下命令进行测试:1
sudo ls /root
如果命令成功运行并显示
/root目录的内容,说明sudo权限已正确配置。
注意事项:
确保编辑器使用
visudo始终使用
visudo命令编辑/etc/sudoers文件,而不是直接使用文本编辑器如vi或nano。visudo能确保语法正确。用户名拼写检查
确保在/etc/sudoers文件中添加的用户名拼写正确。例如,user用户配置应为:1
user ALL=(ALL) ALL
使用用户组配置
如果希望将一组用户都添加到sudo权限,可以将centos用户加入wheel组(CentOS 系统中默认允许wheel组成员使用sudo):1
usermod -aG wheel centos
然后确保
/etc/sudoers文件中有以下配置(默认是启用的):1
2## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL完成以上步骤后,再次尝试使用
sudo命令,确认centos用户已获得sudo权限。退出到普通用户并重新登录
确保在添加sudo权限后,注销并重新登录以使更改生效。
切换用户
要从 root 用户切换到其他普通用户,可以使用 su 或 sudo 命令。以下是两种常用的方法:
使用
su命令su命令用于在当前会话中切换用户身份。假设你要切换到用户名为username的普通用户:1
su - username
解释:
su:切换用户。-:带上这个选项会加载目标用户的环境变量。username:目标用户的用户名。
执行此命令后,你会切换到
username用户,并需要输入该用户的密码。使用
sudo命令
如果你想暂时以另一个用户的身份运行命令,可以使用sudo命令。假设你要以username用户的身份运行某个命令:1
sudo -u username command
解释:
sudo:以超级用户权限运行命令。-u username:指定要切换到的用户。command:你想要执行的命令。
例如,以
username用户的身份运行ls命令:1
sudo -u username ls /home/username
切换回 root 用户
如果你已经切换到普通用户,并且需要切换回 root 用户,你可以使用:
1 | su - |
然后输入 root 用户的密码,或者如果你已经配置了 sudo,也可以使用:
1 | sudo -i |
退出到上一个用户
如果你从 root 用户切换到普通用户,可以使用 exit 命令返回到 root 用户:
1 | exit |
示例操作
- 从
root用户切换到username用户:
1 | su - username |
- 从
username用户切换回root用户:
1 | exit |
- 以
username用户的身份运行ls命令:
1 | sudo -u username ls /home/username |
通过这些命令,你可以在 root 用户和普通用户之间切换,或者以特定用户身份运行命令。
安装docker
一、准备工作
系统要求
Docker 支持 64 位版本 CentOS 7/8,并且要求内核版本不低于 3.10。CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。
卸载旧版本
旧版本的 Docker 称为
docker或docker-engine,使用以下命令卸载旧版本:1
2
3
4
5
6
7
8
9
10sudo 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
使用 yum
安装依赖包
1
sudo yum install -y yum-utils
配置 Docker YUM 源
鉴于国内网络问题,强烈建议使用国内源。添加阿里云 Docker YUM 源:1
2
3
4
5sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo官方 Docker YUM 源(不推荐在国内使用):
1
2
3# sudo yum-config-manager \
# --add-repo \
# https://download.docker.com/linux/centos/docker-ce.repo安装 Docker
更新 yum 软件源缓存,并安装 Docker:1
sudo yum install docker-ce docker-ce-cli containerd.io
CentOS 8 额外设置
由于 CentOS 8 防火墙使用了 nftables,但 Docker 尚未支持 nftables。我们可以使用如下设置使用 iptables:
修改/etc/firewalld/firewalld.conf文件:
将FirewallBackend=nftables更改为FirewallBackend=iptables:1
2# FirewallBackend=nftables
FirewallBackend=iptables或者执行以下命令:
1
2sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0
sudo firewall-cmd --reload
使用脚本自动安装
在测试或开发环境中,Docker 官方提供了一套便捷的安装脚本,CentOS 系统上可以使用这套脚本安装。另外可以通过 --mirror 选项使用国内源进行安装:
1 | curl -fsSL get.docker.com -o get-docker.sh |
三、启动 Docker
启动并设置 Docker 开机自启:
1 | sudo systemctl enable docker |
四、建立用户组
默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,建议将需要使用 docker 的用户加入 docker 用户组。
建立 docker 组:
1
sudo groupadd docker
将当前用户加入 docker 组:
1
sudo usermod -aG docker $USER
退出当前终端并重新登录,以使组变更生效。
五、测试 Docker 是否安装正确
测试 Docker 是否安装成功:
1 | docker run --rm hello-world |
若能正常输出以下信息,则说明安装成功:
1 | Hello from Docker! |
六、镜像加速
Unable to find image 'hello-world:latest' locally,相信大家在拉取镜像的过程中都出现过这个问题。
很多的回答都是修改阿里镜像源,但是修改之后却无用。这是因为阿里镜像源对于每个人来说都需要专属源。
可以将多个镜像加速器添加到 Docker 的配置文件中,以确保在一个加速器不可用时,Docker 可以尝试使用其他加速器。以下是添加多个镜像加速器的详细步骤:
配置 Docker 使用多个镜像加速器
编辑 Docker 配置文件:
使用你喜欢的文本编辑器(如
vi或nano)编辑/etc/docker/daemon.json文件。如果该文件不存在,则需要创建它:1
sudo vi /etc/docker/daemon.json
添加多个镜像加速器配置:
阿里云镜像地址,登录后,左侧菜单选中:镜像工具→镜像加速器,就可以看到专属地址:

在
daemon.json文件中添加以下内容:1
2
3
4
5
6
7
8{
"registry-mirrors": [
"https://xxx.mirror.aliyuncs.com", // 填写自己的阿里云id
"https://docker.mirrors.ustc.edu.cn/", // 科大镜像
"https://hub-mirror.c.163.com/", // 网易
"https://reg-mirror.qiniu.com" // 七牛云加速器
]
}验证 JSON 格式:
确保文件内容格式正确,可以通过以下命令验证:
1
cat /etc/docker/daemon.json | python -m json.tool
如果格式正确,命令会输出格式化的 JSON。如果有错误,会提示相关信息。

重新加载 Docker 配置并重启 Docker 服务:
1
2sudo systemctl daemon-reload
sudo systemctl restart docker检查 Docker 服务状态:
确保 Docker 服务正常运行:
1
sudo systemctl status docker
测试 Docker 加速器配置:
尝试再次运行
hello-world容器:1
docker run --rm hello-world

通过配置多个镜像加速器,Docker 将依次尝试这些加速器来拉取镜像,以提高拉取镜像的成功率和速度。如果按照上述步骤操作后仍然遇到问题,请检查网络连接或镜像加速器的可用性。
七、添加内核参数
如果在 CentOS 使用 Docker 时看到以下警告信息:
1 | WARNING: bridge-nf-call-iptables is disabled |
请添加内核配置参数以启用这些功能:
1 | sudo tee -a /etc/sysctl.conf <<-EOF |
然后重新加载 sysctl.conf:
1 | sudo sysctl -p |