跳转至内容
0
  • 主页
  • 版块
  • 最新
  • 标签
  • 热门
  • 主页
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识
让每一次思考都有价值
  1. 让每一次思考都有价值
  2. 版块
  3. 教程与经验
  4. 系统与软件
  5. Linux配置Docker环境(以Ubuntu为例)

Linux配置Docker环境(以Ubuntu为例)

已定时 已固定 已锁定 已移动 系统与软件
docker
1 评论 1 发布者 14 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
评论
  • 在新文章中评论
登录后评论
此文章已被删除。只有拥有文章管理权限的用户可以查看。
  • 小黑小 离线
    小黑小 离线
    小黑
    编写于 最后由 Jinhao 编辑
    #1
    目录
    一、为什么在Ubuntu上配置Docker?
    二、前置准备:确认Ubuntu环境与权限
    1. 检查Ubuntu系统版本
    2. 确认当前用户权限
    3. 卸载旧版本Docker(可选)
    三、核心步骤:Ubuntu上安装Docker
    1. 安装必要的依赖工具
    2. 添加Docker官方GPG密钥
    3. 配置Docker官方仓库
    4. 安装Docker Engine
    5. 验证安装是否成功
    四、关键配置:让Docker用起来更顺手
    1. 配置免sudo使用Docker(推荐)
    2. 更换Docker国内镜像源(解决拉取慢问题)
    3. 检查Docker服务状态(日常维护)
    五、常见问题:安装与使用中的坑及解决方法
    1. 安装时提示“无法定位包docker-ce”
    2. 运行docker run hello-world时提示“permission denied”
    3. 拉取镜像时出现“timeout”或“no such host”
    4. Docker服务无法启动,提示“failed to start docker.service: Unit docker.service is masked”
    六、总结:Ubuntu配置Docker的完整流程回顾

    一、为什么在Ubuntu上配置Docker?

    在Linux系统中,Ubuntu是最主流的发行版之一,它不仅社区活跃、文档丰富,还对Docker有完美的兼容性——Docker本质上依赖Linux内核的容器化技术(如Namespace、Cgroups),在Ubuntu上运行时无需额外的虚拟化层(如Windows的Hyper-V、macOS的虚拟机),性能更接近原生,且配置步骤更简洁。

    对开发者而言,在Ubuntu上配置Docker,既能避免Windows/macOS下的“环境割裂”问题,又能模拟生产环境(大多数生产服务器使用Linux),让“开发环境与生产环境一致”的目标更容易实现。

    [示意1:Ubuntu与Docker的适配优势]

    Windows/macOS运行Docker → 依赖虚拟机/Hyper-V → 性能损耗+配置复杂
        |
        对比
        |
    Ubuntu运行Docker → 直接调用Linux内核 → 原生性能+配置简洁
    

    我曾在Windows上遇到过Docker容器无法访问宿主机网络的问题,切换到Ubuntu后,只需简单配置网络参数就能解决,这也是我推荐在Ubuntu上使用Docker的重要原因。

    二、前置准备:确认Ubuntu环境与权限

    在开始配置前,需要完成两项基础检查,避免后续出现兼容性问题。

    1. 检查Ubuntu系统版本

    Docker对Ubuntu的版本有明确要求,需确保系统为 Ubuntu 20.04 LTS、22.04 LTS 或更高版本(LTS版本长期支持,更稳定)。

    检查版本的命令:

    lsb_release -a
    

    若输出中“Release”字段为20.04、22.04等,说明版本符合要求;若版本过低,建议先升级系统(执行sudo apt upgrade)或重新安装LTS版本。

    2. 确认当前用户权限

    Docker命令默认需要root权限(或加入docker用户组的权限),后续操作中需频繁使用sudo,建议提前确认当前用户是否有sudo权限:

    # 执行简单的sudo命令,测试权限
    sudo echo "权限正常"
    

    若输出“权限正常”,说明sudo权限可用;若提示“xxx is not in the sudoers file”,需联系系统管理员添加sudo权限(或切换到root用户操作)。

    3. 卸载旧版本Docker(可选)

    若之前安装过旧版Docker(如docker、docker.io、docker-engine),需先卸载,避免冲突:

    sudo apt-get remove docker docker-engine docker.io containerd runc
    

    即使从未安装过,执行此命令也不会报错,可放心操作。

    三、核心步骤:Ubuntu上安装Docker

    按照“配置仓库→安装依赖→安装Docker”的顺序操作,全程通过官方源安装,确保安全性和稳定性。

    1. 安装必要的依赖工具

    首先安装apt-transport-https、ca-certificates等工具,这些工具用于支持HTTPS协议的仓库访问和GPG密钥验证:

    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
    
    • apt-transport-https:允许apt通过HTTPS访问仓库;
    • ca-certificates:用于验证HTTPS证书,确保仓库来源可靠;
    • curl:用于下载Docker官方GPG密钥。
    2. 添加Docker官方GPG密钥

    为了确保后续安装的Docker包是官方发布的(避免篡改),需要添加Docker的官方GPG密钥并验证:

    # 下载官方GPG密钥并添加到系统信任列表
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
    # 验证密钥(可选,确保密钥正确)
    sudo gpg --no-default-keyring --keyring /usr/share/keyrings/docker-archive-keyring.gpg --list-keys
    

    若验证时输出包含“Docker Release (CE deb) docker@docker.com”,说明密钥正确。

    3. 配置Docker官方仓库

    将Docker官方仓库添加到Ubuntu的apt源列表中,后续安装Docker时会从官方源下载,而非Ubuntu默认的第三方源:

    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    • $(dpkg --print-architecture):自动识别系统架构(如amd64、arm64);
    • $(lsb_release -cs):自动获取Ubuntu的版本代号(如20.04对应focal,22.04对应jammy)。
    4. 安装Docker Engine

    配置完仓库后,即可安装最新版的Docker Engine(包含docker-ce、docker-ce-cli、containerd.io):

    # 更新apt源列表(让系统识别新添加的Docker仓库)
    sudo apt-get update
    
    # 安装Docker Engine
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io
    
    5. 验证安装是否成功

    安装完成后,通过启动Docker服务并运行hello-world容器,验证Docker是否正常工作:

    # 启动Docker服务(Ubuntu 20.04+/22.04默认使用systemd)
    sudo systemctl start docker
    
    # 设置Docker开机自启(避免每次重启系统后手动启动)
    sudo systemctl enable docker
    
    # 运行hello-world容器,测试Docker功能
    sudo docker run hello-world
    

    若输出包含“Hello from Docker!”的欢迎信息,说明Docker已成功安装并能正常运行。

    四、关键配置:让Docker用起来更顺手

    基础安装完成后,还需要做一些优化配置,比如免sudo使用Docker、更换国内镜像源,避免后续使用中频繁踩坑。

    1. 配置免sudo使用Docker(推荐)

    默认情况下,每次执行docker命令都需要加sudo,频繁操作很繁琐。通过将当前用户加入docker用户组,可以实现免sudo使用Docker:

    # 将当前用户加入docker用户组
    sudo usermod -aG docker $USER
    
    # 注销当前用户并重新登录(使配置生效)
    

    ⚠️ 注意:修改用户组后,必须注销当前会话(如关闭终端重开、重启系统),否则配置不会生效。

    生效后,执行docker ps(无需sudo),若能正常显示容器列表(即使为空),说明配置成功。

    我第一次配置时忘记注销,以为命令出错,后来才发现是用户组配置未生效,这个细节一定要注意。

    2. 更换Docker国内镜像源(解决拉取慢问题)

    Docker默认使用国外的官方仓库(https://hub.docker.com/),国内访问时经常出现拉取镜像慢、超时的问题。通过配置国内镜像源(如阿里云、网易云),可以大幅提升拉取速度。

    步骤如下:

    1. 创建Docker配置目录(若不存在):

      sudo mkdir -p /etc/docker
      
    2. 编写配置文件daemon.json:

      sudo tee /etc/docker/daemon.json <<-'EOF'
      {
        "registry-mirrors": [
          "https://docker.mirrors.ustc.edu.cn",  # 中国科学技术大学镜像
          "https://hub-mirror.c.163.com",        # 网易云镜像
          "https://cr.console.aliyun.com"        # 阿里云镜像(需登录阿里云获取专属地址,更稳定)
        ]
      }
      EOF
      

      ⚠️ 阿里云镜像建议使用专属地址:登录阿里云控制台(https://cr.console.aliyun.com/),在“镜像加速器”中获取自己的专属地址,替换上述配置中的阿里云地址,速度更快且更稳定。

    3. 重启Docker服务,使配置生效:

      sudo systemctl daemon-reload
      sudo systemctl restart docker
      
    4. 验证镜像源是否生效:

      docker info
      

      若输出中“Registry Mirrors”字段包含刚才配置的国内地址,说明配置成功。

    3. 检查Docker服务状态(日常维护)

    后续使用中,若遇到Docker无法启动的问题,可通过以下命令检查服务状态:

    # 查看Docker服务状态
    sudo systemctl status docker
    
    # 若服务异常,重启Docker
    sudo systemctl restart docker
    
    # 查看Docker日志(排查故障)
    sudo journalctl -u docker -f
    

    五、常见问题:安装与使用中的坑及解决方法

    在配置过程中,可能会遇到各种小问题,这里总结几个我踩过的坑及解决方案。

    1. 安装时提示“无法定位包docker-ce”

    原因:Docker仓库配置错误,导致apt无法找到docker-ce包。
    解决方案:

    1. 检查/etc/apt/sources.list.d/docker.list文件是否正确:
      cat /etc/apt/sources.list.d/docker.list
      
      确保内容包含“https://download.docker.com/linux/ubuntu”和正确的版本代号(如focal、jammy)。
    2. 重新执行“添加GPG密钥”和“配置仓库”的步骤,确保命令没有拼写错误。
    3. 再次更新apt源列表:
      sudo apt-get update
      
    2. 运行docker run hello-world时提示“permission denied”

    原因:当前用户未加入docker用户组,无权限操作Docker。
    解决方案:

    1. 重新执行“配置免sudo使用Docker”的步骤,确保用户已加入docker组:
      groups $USER  # 查看当前用户所属组,若包含docker则说明已加入
      
    2. 注销当前用户并重新登录,使用户组配置生效。
    3. 拉取镜像时出现“timeout”或“no such host”

    原因:国外镜像源访问不畅,或国内镜像源配置错误。
    解决方案:

    1. 检查网络连接是否正常(如ping baidu.com)。
    2. 重新配置国内镜像源,确保daemon.json中的地址正确(尤其是阿里云专属地址)。
    3. 重启Docker服务:
      sudo systemctl restart docker
      
    4. 尝试手动指定镜像源拉取(临时方案):
      # 以拉取nginx为例,指定阿里云镜像源
      docker pull registry.cn-hangzhou.aliyuncs.com/library/nginx
      
    4. Docker服务无法启动,提示“failed to start docker.service: Unit docker.service is masked”

    原因:Docker服务被“屏蔽”(masked),通常是误操作导致。
    解决方案:

    1. 解除服务屏蔽:
      sudo systemctl unmask docker.service
      sudo systemctl unmask docker.socket
      
    2. 重启Docker服务:
      sudo systemctl start docker
      

    六、总结:Ubuntu配置Docker的完整流程回顾

    将整个配置过程梳理为“5步核心流程”,方便后续查阅或重新配置:

    1. 前置检查:确认Ubuntu版本(20.04+/22.04 LTS)、sudo权限,卸载旧版Docker;
    2. 安装依赖:sudo apt-get install apt-transport-https ca-certificates curl software-properties-common;
    3. 配置仓库:添加Docker官方GPG密钥→配置官方仓库→更新apt源;
    4. 安装Docker:sudo apt-get install docker-ce docker-ce-cli containerd.io→启动服务并设为开机自启;
    5. 优化配置:将用户加入docker组(免sudo)→配置国内镜像源→验证生效。

    按照这个流程操作,在Ubuntu上配置Docker通常能一次成功。后续使用中,若遇到问题,可通过docker info、systemctl status docker、journalctl -u docker等命令排查,大部分问题都能快速解决。

    1 条评论 最后评论
    0
    评论
    • 在新文章中评论
    登录后评论
    • 从旧到新
    • 从新到旧
    • 最多赞同


    • 登录

    • 没有帐号? 注册

    • 登录或注册以进行搜索。
    • 第一个评论
      最后一个评论