CentOS 7 64 安装 Docker

前言

在虚拟机中安装 Docker 是一种常见的测试和开发环境搭建方式。通过在虚拟机上安装 Docker,可以方便地创建和管理容器化应用,同时避免对宿主机系统造成影响。以下是在 CentOS 7 虚拟机中安装 Docker 的详细步骤。


1. 更新系统(可以不操作)

在安装 Docker 之前,建议先更新虚拟机中的系统软件包:

bash 复制代码
sudo yum update -y

2. 卸载旧版本的 Docker(如果已安装)

2.1 确认系统中是否已安装 Docker

运行以下命令检查系统中是否已安装 Docker 相关包:

bash 复制代码
yum list installed | grep docker

如果没有任何输出,则说明系统中未安装 Docker。

2.2 如果虚拟机中之前安装过 Docker,需要先卸载旧版本
2.2.1 停止 Docker 服务

在卸载 Docker 之前,需要先停止 Docker 服务:

bash 复制代码
sudo systemctl stop docker
2.2.2 禁用 Docker 自启动
bash 复制代码
sudo systemctl disable docker
2.2.3 卸载 Docker 软件包

运行以下命令卸载 Docker 及其相关组件:

bash 复制代码
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 的数据目录和配置文件:

bash 复制代码
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/docker
2.2.5 删除 Docker 用户组

如果之前创建了 Docker 用户组,可以删除该用户组:

bash 复制代码
sudo groupdel docker
2.2.6 清理 YUM 配置

删除 Docker 的 YUM 仓库配置文件:

bash 复制代码
sudo rm -rf /etc/yum.repos.d/docker-ce*
2.2.7 清理 YUM 缓存

清理 YUM 缓存以确保系统状态一致:

bash 复制代码
sudo yum clean all
2.2.8 验证 Docker 是否已完全卸载

运行以下命令检查系统中是否还残留 Docker 组件:

bash 复制代码
yum list installed | grep docker

如果没有任何输出,则表示 Docker 已完全卸载。

3. 安装必要的依赖

安装一些必要的依赖包,这些包用于管理 Docker 的存储和配置:

bash 复制代码
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

4. 添加 Docker 的官方 YUM 仓库

使用 yum-utils 添加 Docker 的官方仓库:

bash 复制代码
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

5. 安装 Docker

从 Docker 的官方仓库安装最新版本的 Docker:

bash 复制代码
yum -y install docker

6. 启动 Docker 服务

安装完成后,启动 Docker 守护进程并设置开机自启:

bash 复制代码
sudo systemctl start docker
sudo systemctl enable docker

7. 验证 Docker 是否安装成功

运行一个简单的测试容器来验证 Docker 是否正常工作:

bash 复制代码
sudo docker run hello-world
7.1 Docker运行/拉取 hello-world 镜像失败或超时
bash 复制代码
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 组:

bash 复制代码
sudo usermod -aG docker $USER

然后重新登录或重启虚拟机以使更改生效。

如果Docker提示组不存在,使用如下方式:

8.1 创建docker

如果docker组确实不存在,可以通过以下命令创建:

bash 复制代码
sudo groupadd docker

如果组已存在,该命令会提示"group 'docker' already exists",但这不会影响后续操作。

8.2. 将用户添加到docker

创建组后,需要将当前用户添加到docker组中:

bash 复制代码
sudo usermod -aG docker $USER

此命令会将当前用户($USER)添加到docker组中,而不会移除用户原有的其他组。

8.3. 应用组变更

为了让组变更生效,可以执行以下命令:

bash 复制代码
newgrp docker

或者重新登录当前用户。

8.4. 检查组成员资格

通过以下命令确认用户是否已成功加入docker组:

bash 复制代码
groups

如果输出中包含docker,则表示用户已正确加入。

8.5. 检查Docker权限

如果问题仍未解决,可以检查Docker的socket文件权限:

bash 复制代码
ls -l /var/run/docker.sock

该文件的组所有权应为docker,权限应为srw-rw----。如果不是,可以通过以下命令修复:

bash 复制代码
sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
8.6. 重启Docker服务

如果上述步骤仍未解决问题,可以尝试重启Docker服务:

bash 复制代码
sudo systemctl restart docker
8.7. 测试Docker命令

完成上述步骤后,运行以下命令测试Docker是否可以正常工作:

bash 复制代码
docker ps

如果不再提示权限问题,则表示问题已解决。

如果问题仍然存在,建议检查Docker的安装是否完整,或者查看系统日志以获取更多信息。

9. 安装 Docker Compose(可选)

如果需要使用 Docker Compose,可以通过以下命令安装:

bash 复制代码
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

注意事项

  1. 内核版本:Docker 需要较新的内核版本(建议 3.10 或更高)。如果虚拟机的内核版本较低,可能需要升级内核。
  2. 虚拟机网络配置:确保虚拟机的网络配置正确,以便 Docker 容器可以正常访问外部网络。
  3. 存储空间:Docker 容器和镜像会占用一定的磁盘空间,请确保虚拟机有足够的存储空间。
  4. 防火墙规则:如果虚拟机启用了防火墙,可能需要调整防火墙规则以允许 Docker 容器的网络通信。

通过以上步骤,您可以在 CentOS 7 虚拟机中成功安装并运行 Docker。

相关推荐
百年孤独百年1 小时前
docker的anythingllm和open-webui压缩包分享(国内镜像拉取,百度云压缩包分享)
运维·docker·容器·anythingllm·open-webui·docker国内镜像
被时间遗忘的猴子3 小时前
x86 Docker 环境构建 arm 架构镜像
docker·架构
学博成4 小时前
Centos 7 在线磁盘扩容
linux·运维·centos
为什么要做囚徒4 小时前
Centos离线安装openssl-devel
linux·运维·centos
dreams_dream11 小时前
docker启动jenkins,jenkins中调用docker
java·docker·jenkins
404测试14 小时前
RAGFlow版本升级-Win10系统Docker
运维·docker·容器
solomonzw15 小时前
linux学习(十六)(集装箱(ulimits,cgroups,容器运行时,Docker))
linux·学习·docker
Pee Wee15 小时前
Linux服务器使用docker离线安装MySQL
linux·服务器·docker
skywalk816317 小时前
Windows10下docker desktop命令行操作指南(大部分也适用于Linux)
运维·docker·容器
NN&&HH18 小时前
Centos时间同步
linux·运维·centos