CentOS 7 64 安装 Docker
前言
在虚拟机中安装 Docker 是一种常见的测试和开发环境搭建方式。通过在虚拟机上安装 Docker,可以方便地创建和管理容器化应用,同时避免对宿主机系统造成影响。以下是在 CentOS 7 虚拟机中安装 Docker 的详细步骤。
1. 更新系统(可以不操作)
在安装 Docker 之前,建议先更新虚拟机中的系统软件包:
sudo yum update -y
2. 卸载旧版本的 Docker(如果已安装)
2.1 确认系统中是否已安装 Docker
运行以下命令检查系统中是否已安装 Docker 相关包:
yum list installed | grep docker
如果没有任何输出,则说明系统中未安装 Docker。
2.2 如果虚拟机中之前安装过 Docker,需要先卸载旧版本
2.2.1 停止 Docker 服务
在卸载 Docker 之前,需要先停止 Docker 服务:
sudo systemctl stop docker
2.2.2 禁用 Docker 自启动
sudo systemctl disable docker
2.2.3 卸载 Docker 软件包
运行以下命令卸载 Docker 及其相关组件:
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin \
docker-compose-plugin
2.2.4 卸载 Docker 软件包
删除 Docker 的数据目录和配置文件:
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/docker
2.2.5 删除 Docker 用户组
如果之前创建了 Docker 用户组,可以删除该用户组:
sudo groupdel docker
2.2.6 清理 YUM 配置
删除 Docker 的 YUM 仓库配置文件:
sudo rm -rf /etc/yum.repos.d/docker-ce*
2.2.7 清理 YUM 缓存
清理 YUM 缓存以确保系统状态一致:
sudo yum clean all
2.2.8 验证 Docker 是否已完全卸载
运行以下命令检查系统中是否还残留 Docker 组件:
yum list installed | grep docker
如果没有任何输出,则表示 Docker 已完全卸载。
3. 安装必要的依赖
安装一些必要的依赖包,这些包用于管理 Docker 的存储和配置:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
4. 添加 Docker 的官方 YUM 仓库
使用 yum-utils
添加 Docker 的官方仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5. 安装 Docker
从 Docker 的官方仓库安装最新版本的 Docker:
yum -y install docker
6. 启动 Docker 服务
安装完成后,启动 Docker 守护进程并设置开机自启:
sudo systemctl start docker
sudo systemctl enable docker
7. 验证 Docker 是否安装成功
运行一个简单的测试容器来验证 Docker 是否正常工作:
sudo docker run hello-world
7.1 Docker运行/拉取 hello-world 镜像失败或超时
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://dockerproxy.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://ccr.ccs.tencentyun.com",
"https://zfzbet67.mirror.aliyuncs.com"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
systemctl status docker
8. (可选)将用户添加到 Docker 组
默认情况下,Docker 需要以 root 用户运行。为了避免每次运行 Docker 命令时都需要使用 sudo
,可以将当前用户添加到 docker
组:
sudo usermod -aG docker $USER
然后重新登录或重启虚拟机以使更改生效。
如果Docker提示组不存在,使用如下方式:
8.1 创建docker
组
如果docker
组确实不存在,可以通过以下命令创建:
sudo groupadd docker
如果组已存在,该命令会提示“group ‘docker’ already exists”,但这不会影响后续操作。
8.2. 将用户添加到docker
组
创建组后,需要将当前用户添加到docker
组中:
sudo usermod -aG docker $USER
此命令会将当前用户($USER
)添加到docker
组中,而不会移除用户原有的其他组。
8.3. 应用组变更
为了让组变更生效,可以执行以下命令:
newgrp docker
或者重新登录当前用户。
8.4. 检查组成员资格
通过以下命令确认用户是否已成功加入docker
组:
groups
如果输出中包含docker
,则表示用户已正确加入。
8.5. 检查Docker权限
如果问题仍未解决,可以检查Docker的socket文件权限:
ls -l /var/run/docker.sock
该文件的组所有权应为docker
,权限应为srw-rw----
。如果不是,可以通过以下命令修复:
sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
8.6. 重启Docker服务
如果上述步骤仍未解决问题,可以尝试重启Docker服务:
sudo systemctl restart docker
8.7. 测试Docker命令
完成上述步骤后,运行以下命令测试Docker是否可以正常工作:
docker ps
如果不再提示权限问题,则表示问题已解决。
如果问题仍然存在,建议检查Docker的安装是否完整,或者查看系统日志以获取更多信息。
9. 安装 Docker Compose(可选)
如果需要使用 Docker Compose,可以通过以下命令安装:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
注意事项
- 内核版本:Docker 需要较新的内核版本(建议 3.10 或更高)。如果虚拟机的内核版本较低,可能需要升级内核。
- 虚拟机网络配置:确保虚拟机的网络配置正确,以便 Docker 容器可以正常访问外部网络。
- 存储空间:Docker 容器和镜像会占用一定的磁盘空间,请确保虚拟机有足够的存储空间。
- 防火墙规则:如果虚拟机启用了防火墙,可能需要调整防火墙规则以允许 Docker 容器的网络通信。
通过以上步骤,您可以在 CentOS 7 虚拟机中成功安装并运行 Docker。