当前位置: 首页 > article >正文

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

在这里插入图片描述

注意事项

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

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


http://www.kler.cn/a/582879.html

相关文章:

  • 【MySQL篇】基本查询实战OJ
  • 12 | 给应用添加优雅关停功能
  • ApiBoot v2.2.5版本无法兼容Hoxton.SR5的SpringCloud Gateway
  • 面向对象Demo01
  • IIS EXPRESS 虚拟目录经验谈!
  • 动态规划 -第1篇
  • 机器翻译技术深度解析:从统计模型到Transformer革命
  • bhSDR Matlab-通用软件无线电平台
  • 【每日学点HarmonyOS Next知识】类型判断、刘海高度、隐私弹窗、滑动下一页效果、清楚缓存
  • Agisoft Metashape 创建分块建模
  • 自然语言处理中的语音识别技术:从声波到语义的智能解码
  • 【最后203篇系列】014 AI机器人-1
  • Nacos相关面试题
  • [项目]基于FreeRTOS的STM32四轴飞行器: 八.遥控器摇杆
  • pytorch心德
  • linux如何判断进程对磁盘是随机写入还是顺序写入?
  • 【Pycharm】Pycharm无法复制粘贴,提示系统剪贴板不可用
  • 内存和硬盘区别
  • CSDN统计个人创作总字数
  • 【HeadFirst系列之HeadFirstJava】第17天之深入解析 Java 包与 JAR:从代码组织到应用发布全流程(含实战)