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

在
daemon.json文件中添加以下内容:{ "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 格式:
确保文件内容格式正确,可以通过以下命令验证:
cat /etc/docker/daemon.json | python -m json.tool如果格式正确,命令会输出格式化的 JSON。如果有错误,会提示相关信息。

重新加载 Docker 配置并重启 Docker 服务:
sudo systemctl daemon-reload sudo systemctl restart docker检查 Docker 服务状态:
确保 Docker 服务正常运行:
sudo systemctl status docker测试 Docker 加速器配置:
尝试再次运行
hello-world容器:docker run --rm hello-world
通过配置多个镜像加速器,Docker 将依次尝试这些加速器来拉取镜像,以提高拉取镜像的成功率和速度。如果按照上述步骤操作后仍然遇到问题,请检查网络连接或镜像加速器的可用性。
七、添加内核参数
如果在 CentOS 使用 Docker 时看到以下警告信息:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
请添加内核配置参数以启用这些功能:
sudo tee -a /etc/sysctl.conf <<-EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
然后重新加载 sysctl.conf:
sudo sysctl -p