Docker安装(非sudo用户可用)

Docker 安装说明 (Ubuntu/Debian)

本文档提供在 Ubuntu/Debian 系统上安装 Docker 并配置非 sudo 运行的完整步骤。

目录

  • 系统要求
  • 安装前检查
  • [安装 Docker](#安装 Docker "#%E5%AE%89%E8%A3%85-docker")
  • [配置非 sudo 运行](#配置非 sudo 运行 "#%E9%85%8D%E7%BD%AE%E9%9D%9E-sudo-%E8%BF%90%E8%A1%8C")
  • 验证安装
  • [安装 Docker Compose](#安装 Docker Compose "#%E5%AE%89%E8%A3%85-docker-compose")
  • 常见问题排查
  • [卸载 Docker](#卸载 Docker "#%E5%8D%B8%E8%BD%BD-docker")

系统要求

  • 操作系统:Ubuntu 20.04/22.04/24.04 或 Debian 10/11/12
  • 架构:x86_64 (amd64) 或 arm64
  • 权限:需要 sudo 权限进行安装

安装前检查

1. 检查系统信息

bash 复制代码
# 查看系统版本
lsb_release -a

# 查看系统架构
dpkg --print-architecture

2. 检查是否已安装 Docker

bash 复制代码
# 检查 Docker 版本
docker --version

# 检查 Docker 服务状态
systemctl status docker

# 检查是否能运行容器
docker ps

如果显示 command not found,说明 Docker 未安装。

3. 卸载旧版本(如存在)

bash 复制代码
# 卸载旧版本
sudo apt-get remove -y docker docker-engine docker.io containerd runc

安装 Docker

方法一:使用官方脚本安装(推荐,简单快捷)

bash 复制代码
# 下载并运行官方安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 清理安装脚本
rm get-docker.sh

方法二:手动安装(推荐,更可控)

步骤 1:更新软件包索引
bash 复制代码
sudo apt-get update
步骤 2:安装必要的依赖包
bash 复制代码
sudo apt-get install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
步骤 3:添加 Docker 官方 GPG 密钥
bash 复制代码
# 创建 keyrings 目录
sudo install -m 0755 -d /etc/apt/keyrings

# 下载并添加 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 设置权限
sudo chmod a+r /etc/apt/keyrings/docker.gpg

注意 :如果是 Debian 系统,将 URL 中的 ubuntu 替换为 debian

步骤 4:添加 Docker 软件源
bash 复制代码
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

注意 :如果是 Debian 系统,将 URL 中的 ubuntu 替换为 debian

步骤 5:安装 Docker Engine
bash 复制代码
# 更新软件包索引
sudo apt-get update

# 安装 Docker 组件
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

配置非 sudo 运行

默认情况下,Docker 守护进程绑定到 Unix socket 而非 TCP 端口,该 socket 由 root 用户拥有,因此需要 sudo 权限。

步骤 1:创建 docker 用户组

bash 复制代码
# 创建 docker 组(通常安装时已自动创建)
sudo groupadd docker

步骤 2:将当前用户添加到 docker 组

bash 复制代码
# 将当前用户添加到 docker 组
sudo usermod -aG docker $USER

# 查看当前用户所属的组
groups $USER

步骤 3:使组权限生效

有两种方法使组权限生效:

方法 1:重新登录(推荐)

bash 复制代码
# 注销并重新登录系统
# 或者重启系统
sudo reboot

方法 2:使用 newgrp 临时生效

bash 复制代码
# 在当前终端临时生效
newgrp docker

步骤 4:启动 Docker 服务

bash 复制代码
# 启动 Docker 服务
sudo systemctl start docker

# 设置开机自启动
sudo systemctl enable docker

# 检查服务状态
sudo systemctl status docker

验证安装

1. 检查 Docker 版本

bash 复制代码
docker --version

预期输出类似:

复制代码
Docker version 24.0.7, build afdd53b

2. 检查 Docker 服务状态

bash 复制代码
sudo systemctl status docker

3. 运行测试容器(验证非 sudo)

bash 复制代码
# 运行 hello-world 测试镜像
docker run hello-world

预期输出:

css 复制代码
Hello from Docker!
This message shows that your installation appears to be working correctly.
...

4. 检查 Docker 信息

bash 复制代码
docker info

5. 验证 Docker Compose

bash 复制代码
docker compose version

安装 Docker Compose

Docker Compose 现已作为 Docker 的插件集成,通过 docker compose 命令使用。

如果需要独立版本的 docker-compose 命令:

bash 复制代码
# 下载最新版本(替换版本号)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

常见问题排查

问题 1:权限被拒绝 (Permission denied)

错误信息

perl 复制代码
permission denied while trying to connect to the Docker daemon socket

解决方案

bash 复制代码
# 方法 1:重新加载组权限
newgrp docker

# 方法 2:修改 socket 权限(临时)
sudo chmod 666 /var/run/docker.sock

# 方法 3:重新登录系统使组权限生效

问题 2:Docker 服务未启动

错误信息

arduino 复制代码
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

解决方案

bash 复制代码
# 启动 Docker 服务
sudo systemctl start docker

# 检查服务状态
sudo systemctl status docker

# 查看日志
sudo journalctl -u docker

问题 3:网络问题导致下载失败

解决方案

bash 复制代码
# 使用国内镜像源(阿里云)
# 编辑 Docker 配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
EOF

# 重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker

问题 4:GPG 密钥问题

解决方案

bash 复制代码
# 删除旧密钥
sudo rm /etc/apt/keyrings/docker.gpg

# 重新添加密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

问题 5:用户组未生效

解决方案

bash 复制代码
# 检查用户是否在 docker 组
groups $USER

# 如果不在,重新添加
sudo usermod -aG docker $USER

# 完全注销并重新登录
logout
# 或重启系统
sudo reboot

卸载 Docker

如需卸载 Docker:

bash 复制代码
# 卸载 Docker 包
sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

# 删除所有镜像、容器和数据卷
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

# 删除 Docker 源
sudo rm /etc/apt/sources.list.d/docker.list

# 删除 GPG 密钥
sudo rm /etc/apt/keyrings/docker.gpg

参考链接

相关推荐
“码”力全开3 小时前
突破异构算力与协议围墙:基于 Docker 与边缘计算的 GB28181/RTSP 视频智能管理平台架构实践(附源码交付)
docker·音视频·边缘计算
java_logo3 小时前
Docker 部署 GitLab CE 完整版教程
docker·容器·gitlab·gitlab docker部署·gitlab部署文档·gitlab部署·gitlab部署教程
llf_cloud3 小时前
docker compose滚动部署实践
运维·docker·容器
AI服务老曹4 小时前
统一视界:基于 Docker+GB28181+RTSP 的边缘计算 AI 视频管理平台协议兼容架构解析(附源码交付)
人工智能·docker·边缘计算
“码”力全开4 小时前
深度解析:基于 Docker 与边缘计算的国产化 AI 视频管理平台,如何通过源码交付实现多协议(GB28181/RTSP)与异构算力解耦?
人工智能·docker·边缘计算
“码”力全开4 小时前
基于 Docker 容器化与异构计算的工业级视频中台架构:GB28181/RTSP 双协议栈统一接入与源码交付深度解析
docker·架构·音视频
ai产品老杨4 小时前
Docker分布式部署与GB28181/RTSP全协议汇聚:基于源码交付的异构边缘计算AI视频管理平台架构解析
docker·容器·架构
ai产品老杨5 小时前
解耦视频流利器:如何利用 GB28181 与 RTSP 协议统一收敛多厂商设备?一套支持 Docker 部署与源码交付的边缘计算 AI 视频中台深度解析
人工智能·docker·边缘计算
专业白嫖怪13 小时前
什么是docker
运维·docker·容器
qq_4523962317 小时前
第十篇:《Dockerfile 最佳实践与镜像瘦身》
docker