Ubuntu:20.04中安装docker

是的,您列出的命令是完整的安装步骤,但为了确保100%可靠性和处理可能的问题,我建议进行以下优化和补充:

完整优化的安装脚本(包含错误处理和验证)

#!/bin/bash# 1. 彻底清理旧版本和配置
sudo apt remove -y docker docker-engine docker.io containerd runc
sudo apt purge -y docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker /var/lib/containerd
sudo rm -f /etc/apt/sources.list.d/docker*.list# 2. 安装必要依赖
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common# 3. 添加阿里云Docker镜像源
echo "添加阿里云镜像源..."
sudo tee /etc/apt/sources.list.d/docker-aliyun.list <<-'EOF'
deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal stable
EOF# 4. 添加GPG密钥(使用apt-key替代方案)
echo "添加GPG密钥..."
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker-aliyun.list > /dev/null# 5. 更新源(增加重试机制)
echo "更新软件源..."
for i in {1..3}; dosudo apt update && breakecho "APT更新失败,重试 ($i/3)..."sleep 2
done# 6. 安装Docker(指定稳定版本)
echo "安装Docker组件..."
sudo apt install -y \docker-ce=5:24.0.7-1~ubuntu.20.04~focal \docker-ce-cli=5:24.0.7-1~ubuntu.20.04~focal \containerd.io=1.6.31-1 \docker-buildx-plugin=0.11.2-1~ubuntu.20.04~focal \docker-compose-plugin=2.23.3-1~ubuntu.20.04~focal# 7. 配置和启动服务
echo "配置Docker服务..."
sudo systemctl enable docker
sudo systemctl start docker# 8. 验证安装
echo "验证安装..."
sudo docker --version
sudo docker run --rm hello-world# 9. 用户权限配置
echo "配置用户权限..."
sudo usermod -aG docker $USER
echo "请执行以下命令使组权限生效:"
echo "  newgrp docker"
echo "或重新登录系统"

关键优化说明:

  1. 彻底清理

    • 增加了旧版本组件的清理(docker-engine, docker.io, runc
    • 删除遗留配置目录(/var/lib/containerd
  2. 密钥处理优化

    • 使用更安全的gpg --dearmor替代过时的apt-key add
    • 将密钥存储在/usr/share/keyrings(现代Linux标准)
  3. 安装稳定性增强

    • 添加APT更新重试机制(应对网络波动)
    • 指定版本安装避免最新版兼容性问题
    docker-ce=5:24.0.7-1~ubuntu.20.04~focal
    containerd.io=1.6.31-1  # 使用经过验证的稳定版本
    
  4. 完整组件安装

    • 明确包含docker-buildx-plugindocker-compose-plugin
    • 避免依赖缺失问题
  5. 验证步骤

    • 添加版本检查(docker --version
    • 运行hello-world容器确认核心功能

使用说明:

  1. 将脚本保存为install_docker.sh
  2. 赋予执行权限:
    chmod +x install_docker.sh
    
  3. 执行安装:
    ./install_docker.sh
    

安装后推荐配置:

# 配置阿里云镜像加速器(替换<your-id>)
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2"
}
EOF# 重启生效
sudo systemctl daemon-reload
sudo systemctl restart docker# 检查配置
docker info | grep Registry

注意:从阿里云容器镜像服务控制台获取专属加速器地址(免费),替换<your-id>

特殊问题处理:

如果仍遇到包下载问题,手动下载安装:

# 获取阿里云下载地址
PKG_URL="https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/focal/pool/stable/amd64"# 下载核心包
wget ${PKG_URL}/containerd.io_1.6.31-1_amd64.deb
wget ${PKG_URL}/docker-ce_24.0.7-1~ubuntu.20.04~focal_amd64.deb
wget ${PKG_URL}/docker-ce-cli_24.0.7-1~ubuntu.20.04~focal_amd64.deb# 安装
sudo dpkg -i containerd.io*.deb
sudo dpkg -i docker-ce-cli*.deb
sudo dpkg -i docker-ce*.deb

这个优化方案解决了原始命令可能存在的密钥存储问题、版本兼容性问题,并增加了网络波动的容错处理,特别适合国内服务器环境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85248.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85248.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据实时风控引擎:Spark Streaming、Kafka、Flink与Doris的融合实践

大数据实时风控引擎&#xff1a;Spark Streaming、Kafka、Flink与Doris的融合实践 在数字金融、电商交易与在线服务的核心战场&#xff0c;风险控制能力已成为业务的生命线。传统批量风控模式在应对瞬息万变的欺诈攻击、信用风险时捉襟见肘。本文将深入探讨如何利用**Spark St…

【创龙瑞芯微 RK3576 全国产 ARM 八核 2.2GHz 工业开发板-硬件说明书】

前 言 本文主要介绍TL3576-EVM评估板硬件接口资源以及设计注意事项等内容。 RK3576J/RK3576处理器的IO电平标准一般为1.8V、3.3V,上拉电源一般不超过3.3V或1.8V,当外接信号电平与IO电平不匹配时,中间需增加电平转换芯片或信号隔离芯片。按键或接口需考虑ESD设计,ESD器件…

一文吃透ADB,从入门到精通

目录 一、ADB 简介1.1 什么是 ADB1.2 ADB 的工作原理1.3 ADB 的安装与环境配置 二、ADB 基础命令2.1 设备连接相关命令2.2 应用管理命令2.3 文件传输命令 三、ADB 高级命令3.1 ADB Shell 深入探究3.2 日志查看与分析3.3 设备信息获取3.4 屏幕操作与录制 四、ADB 常见问题与解决…

PostgreSQL高可用架构设计与实践指南

# PostgreSQL高可用架构设计与实践指南 ## 一、高可用性核心诉求 PostgreSQL作为企业级关系型数据库&#xff0c;高可用设计需要满足以下关键指标&#xff1a; - 故障恢复时间&#xff08;RTO&#xff09;&#xff1a;秒级到分钟级自动切换能力 - 数据损失容忍度&#xff0…

今天我想清楚了

首先说一声抱歉&#xff0c;很多天没有更新了&#xff0c;因为在我这里&#xff0c;我的内心感到迷茫&#xff0c;从来没有这样过&#xff0c;不知道为什么自己一直要做的事&#xff0c;进度太慢了&#xff0c;因为我的人生是空虚的&#xff0c;我感觉我做的不够好&#xff0c;…

代码随想录day3链表1

new关键字 1.new是一个关键字&#xff0c;用于开辟空间&#xff0c;开辟的空间在堆上&#xff0c;而一般声明的变量存放在栈上&#xff1b; 2.new得到的是一段空间的首地址。所以一般需要用指针来存放这段地址 new int(10);//返回new出来这块内存的地址int *pnew int(10);//…

taro小程序如何实现新用户引导功能?

一、需求背景 1、需要实现小程序新功能引导 2、不使用第三方库&#xff08;第三方组件试了几个&#xff0c;都是各种兼容性问题&#xff0c;放弃&#xff09; 二、实现步骤 1、写一个公共的guide组件&#xff0c;代码如下 components/Guide/index.tsx文件 import React, { …

键盘动作可视化技术浅析:如何做到低延迟显示

在做屏幕录制或者操作演示的时候&#xff0c;你是否遇到过这样的问题&#xff1a;观众看不清你按了哪个键、点了哪里&#xff1f;这是能完美解决这个问题的小工具Keyviz。它可以把你的键盘输入和鼠标点击实时显示在屏幕上&#xff0c;清晰直观&#xff0c;特别适合教学、录屏、…

Prufer序列 学习笔记

文章目录 P r u f e r Prufer Prufer 序列对树建立 P r u f e r Prufer Prufer 序列对 P r u f e r Prufer Prufer 序列重建树 应用Cayley 公式[HNOI2004] 树的计数「雅礼集训 2017 Day8」共[THUPC 2018] 城市地铁规划CF156D Clues[ARC106F] Figures P r u f e r Prufer Pruf…

高性能场景使用Protocol Buffers/Apache Avro进行序列化怎么实现呢

我们以Protocol Buffers&#xff08;Protobuf&#xff09;和Apache Avro为例&#xff0c;分别展示高性能序列化的实现方式。 由于两者都需要定义Schema&#xff0c;然后生成代码&#xff0c;因此步骤包括&#xff1a; 1. 定义Schema文件 2. 使用工具生成Java类 3. 在代码中…

iOS端网页调试 debug proxy策略:项目中的工具协同实践

移动开发中的调试&#xff0c;一直是效率瓶颈之一。特别是当前 Web 前端与 App 原生高度耦合的背景下&#xff0c;页面调试不仅受限于浏览器&#xff0c;还要面对 WebView 实现差异、系统权限控制、设备多样性等复杂情况。 但我们是否可以构建一套**“设备无关”的调试工作流*…

springboot项目启动报错:spring boot application in default package

启动类报错&#xff1a; 问题&#xff1a; springboot的启动方法不能直接在java目录下 解决&#xff1a; 1.使用CompentScan 和EnableAutoConfiguration注解 2.启动类放在java目录下的package目录下

机器学习实验报告5-K-means 算法

4.1 k-means算法简介 聚类分析&#xff0c;作为机器学习领域中的一种无监督学习方法&#xff0c;在数据探索与知识发现过程中扮演着举足轻重的角色。它能够在没有先验知识或标签信息的情况下&#xff0c;通过挖掘数据中的内在结构和规律&#xff0c;将数据对象自动划分为多个类…

【已解决】yoloOnnx git工程部署

首先 yoloonnx一个VS工程下来整个工程大概1-2个g的大小因此在git的过程中总是会因为文件超过100M而触发报错&#xff0c;上传不上去&#xff0c;因此现在需要做一个过滤才能把工程重新上传上去&#xff0c;那么这个时候别人需要下载下来的时候确实不完整的工程&#xff0c;因此…

如何轻松地将照片从电脑传输到安卓手机

一些安卓用户正在寻找有效可靠的方法&#xff0c;将照片从电脑传输到安卓设备。如果您也想将有趣或难忘的照片导入安卓手机或平板电脑&#xff0c;可以参考这篇文章&#xff0c;它提供了 6 种可靠的方法&#xff0c;让您轻松传输照片。 第 1 部分&#xff1a;如何通过 Android …

准备纯血鸿蒙理论高级认证的一些心得

最近在准备纯血鸿蒙理论高级认证&#xff0c;一些心得记录下来&#xff0c;希望早日考过高级&#xff01; 一、考试目标&#xff1a; HarmonyOS核心技术理念HarmonyOS应用架构设计ArkTS原理和实践ArkUI开发HarmonyOS关键技术能力开发工程管理、代码编辑、调试与定位应用上架运…

义乌购拍立淘API接入指南

一、接口概述 拍立淘是义乌购平台提供的以图搜货服务&#xff0c;通过HTTP RESTful API实现。当前版本为v3.2&#xff0c;支持JPG/PNG格式图片&#xff08;≤5MB&#xff09;&#xff0c;返回相似商品列表及供应链信息。 二、接入准备 申请开发者账号 # 开发者注册示例&…

Web 连接和跟踪

大家读完觉得有帮助记得及时关注和点赞&#xff01;&#xff01;&#xff01; 抽象 网络跟踪是一种普遍且不透明的做法&#xff0c;可实现个性化广告、重新定位和转化跟踪。 随着时间的推移&#xff0c;它已经演变成一个复杂的侵入性生态系统&#xff0c;采用越来越复杂的技术来…

前端技术栈与 SpreadJS 深度融合:打造高效数据表格应用

引言 在当今数字化的时代&#xff0c;数据表格应用在各种 Web 项目中扮演着至关重要的角色。从企业级的管理系统到电商平台的商品展示&#xff0c;数据表格都是用户与数据交互的重要界面。前端技术栈如 JavaScript、HTML 和 CSS 为构建用户界面提供了强大的工具和方法&#xf…

如何用ai描述缺陷(bug)

附件1&#xff1a; 附件2&#xff1a; 将附件1和附件2发送给deepseek&#xff0c;且输入对话框的文字&#xff1a; 然后进入禅道用户登录 - 禅道 ### **缺陷报告&#xff1a;登录功能无响应缺陷** **提交平台**&#xff1a;禅道缺陷管理系统 **发现环境**&#xff1a;测试环…