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

如何在Debian操作系统上安装Docker

本章教程,主要介绍如何在Debian 11 系统上安装Docker。主要使用一键安装Docker脚本和一键卸载脚本来完成。

在这里插入图片描述

一、安装Docker

#!/bin/bashRED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m'CURRENT_DIR=$(cd "$(dirname "$0")" || exitpwd
)function log() {message="[1Panel Log]: $1 "case "$1" in*"失败"*|*"错误"*|*"请使用 root 或 sudo 权限运行此脚本"*)echo -e "${RED}${message}${NC}" 2>&1 | tee -a "${CURRENT_DIR}"/install.log;;*"成功"*)echo -e "${GREEN}${message}${NC}" 2>&1 | tee -a "${CURRENT_DIR}"/install.log;;*"忽略"*|*"跳过"*)echo -e "${YELLOW}${message}${NC}" 2>&1 | tee -a "${CURRENT_DIR}"/install.log;;*)echo -e "${BLUE}${message}${NC}" 2>&1 | tee -a "${CURRENT_DIR}"/install.log;;esac
}
log "======================= 开始安装Docker ======================="function Check_Root() {if [[ $EUID -ne 0 ]]; thenlog "请使用 root 或 sudo 权限运行此脚本"exit 1fi
}ACCELERATOR_URL="https://docker.1panelproxy.com"
DAEMON_JSON="/etc/docker/daemon.json"
BACKUP_FILE="/etc/docker/daemon.json.1panel_bak"function create_daemon_json() {log "创建新的配置文件 ${DAEMON_JSON}..."mkdir -p /etc/dockerecho '{"registry-mirrors": ["'"$ACCELERATOR_URL"'"]}' | tee "$DAEMON_JSON" > /dev/nulllog "镜像加速配置已添加。"
}function configure_accelerator() {read -p "是否配置镜像加速?(y/n): " configure_acceleratorif [[ "$configure_accelerator" == "y" ]]; thenif [ -f "$DAEMON_JSON" ]; thenlog "配置文件已存在,我们将备份现有配置文件为 ${BACKUP_FILE} 并创建新的配置文件。"cp "$DAEMON_JSON" "$BACKUP_FILE"create_daemon_jsonelsecreate_daemon_jsonfilog "正在重启 Docker 服务..."systemctl daemon-reloadsystemctl restart dockerlog "Docker 服务已成功重启。"elselog "未配置镜像加速。"fi
}function Install_Docker(){if which docker >/dev/null 2>&1; thenlog "检测到 Docker 已安装,跳过安装步骤"configure_acceleratorelselog "... 在线安装 docker"if [[ $(curl -s ipinfo.io/country) == "CN" ]]; thensources=("https://mirrors.aliyun.com/docker-ce""https://mirrors.tencent.com/docker-ce""https://mirrors.163.com/docker-ce""https://mirrors.cernet.edu.cn/docker-ce")docker_install_scripts=("https://get.docker.com""https://testingcf.jsdelivr.net/gh/docker/docker-install@master/install.sh""https://cdn.jsdelivr.net/gh/docker/docker-install@master/install.sh""https://fastly.jsdelivr.net/gh/docker/docker-install@master/install.sh""https://gcore.jsdelivr.net/gh/docker/docker-install@master/install.sh""https://raw.githubusercontent.com/docker/docker-install/master/install.sh")get_average_delay() {local source=$1local total_delay=0local iterations=2local timeout=2for ((i = 0; i < iterations; i++)); dodelay=$(curl -o /dev/null -s -m $timeout -w "%{time_total}\n" "$source")if [ $? -ne 0 ]; thendelay=$timeoutfitotal_delay=$(awk "BEGIN {print $total_delay + $delay}")doneaverage_delay=$(awk "BEGIN {print $total_delay / $iterations}")echo "$average_delay"}min_delay=99999999selected_source=""for source in "${sources[@]}"; doaverage_delay=$(get_average_delay "$source" &)if (( $(awk 'BEGIN { print '"$average_delay"' < '"$min_delay"' }') )); thenmin_delay=$average_delayselected_source=$sourcefidonewaitif [ -n "$selected_source" ]; thenlog "选择延迟最低的源 $selected_source,延迟为 $min_delay 秒"export DOWNLOAD_URL="$selected_source"for alt_source in "${docker_install_scripts[@]}"; dolog "尝试从备选链接 $alt_source 下载 Docker 安装脚本..."if curl -fsSL --retry 2 --retry-delay 3 --connect-timeout 5 --max-time 10 "$alt_source" -o get-docker.sh; thenlog "成功从 $alt_source 下载安装脚本"breakelselog "从 $alt_source 下载安装脚本失败,尝试下一个备选链接"fidoneif [ ! -f "get-docker.sh" ]; thenlog "所有下载尝试都失败了。您可以尝试手动安装 Docker,运行以下命令:"log "bash <(curl -sSL https://linuxmirrors.cn/docker.sh)"exit 1fish get-docker.sh 2>&1 | tee -a ${CURRENT_DIR}/install.logdocker_config_folder="/etc/docker"if [[ ! -d "$docker_config_folder" ]];thenmkdir -p "$docker_config_folder"fidocker version >/dev/null 2>&1if [[ $? -ne 0 ]]; thenlog "docker 安装失败\n您可以尝试使用离线包进行安装,具体安装步骤请参考以下链接:https://1panel.cn/docs/installation/package_installation/"exit 1elselog "docker 安装成功"systemctl enable docker 2>&1 | tee -a "${CURRENT_DIR}"/install.logconfigure_acceleratorfielselog "无法选择源进行安装"exit 1fielselog "非中国大陆地区,无需更改源"export DOWNLOAD_URL="https://download.docker.com"curl -fsSL "https://get.docker.com" -o get-docker.shsh get-docker.sh 2>&1 | tee -a "${CURRENT_DIR}"/install.loglog "... 启动 docker"systemctl enable docker; systemctl daemon-reload; systemctl start docker 2>&1 | tee -a "${CURRENT_DIR}"/install.logdocker_config_folder="/etc/docker"if [[ ! -d "$docker_config_folder" ]];thenmkdir -p "$docker_config_folder"fidocker version >/dev/null 2>&1if [[ $? -ne 0 ]]; thenlog "docker 安装失败\n您可以尝试使用安装包进行安装,具体安装步骤请参考以下链接:https://1panel.cn/docs/installation/package_installation/"exit 1elselog "docker 安装成功"fififi
}function Install_Compose(){docker-compose version >/dev/null 2>&1if [[ $? -ne 0 ]]; thenlog "... 在线安装 docker-compose"arch=$(uname -m)if [ "$arch" == 'armv7l' ]; thenarch='armv7'ficurl -L https://resource.fit2cloud.com/docker/compose/releases/download/v2.26.1/docker-compose-$(uname -s | tr A-Z a-z)-"$arch" -o /usr/local/bin/docker-compose 2>&1 | tee -a "${CURRENT_DIR}"/install.logif [[ ! -f /usr/local/bin/docker-compose ]];thenlog "docker-compose 下载失败,请稍候重试"exit 1fichmod +x /usr/local/bin/docker-composeln -s /usr/local/bin/docker-compose /usr/bin/docker-composedocker-compose version >/dev/null 2>&1if [[ $? -ne 0 ]]; thenlog "docker-compose 安装失败"exit 1elselog "docker-compose 安装成功"fielsecompose_v=$(docker-compose -v)if [[ $compose_v =~ 'docker-compose' ]];thenread -p "检测到已安装 Docker Compose 版本较低(需大于等于 v2.0.0 版本),是否升级 [y/n] : " UPGRADE_DOCKER_COMPOSEif [[ "$UPGRADE_DOCKER_COMPOSE" == "Y" ]] || [[ "$UPGRADE_DOCKER_COMPOSE" == "y" ]]; thenrm -rf /usr/local/bin/docker-compose /usr/bin/docker-composeInstall_Composeelselog "Docker Compose 版本为 $compose_v,可能会影响应用商店的正常使用"fielselog "检测到 Docker Compose 已安装,跳过安装步骤"fifi
}function Get_Ip(){active_interface=$(ip route get 8.8.8.8 | awk 'NR==1 {print $5}')if [[ -z $active_interface ]]; thenLOCAL_IP="127.0.0.1"elseLOCAL_IP=$(ip -4 addr show dev "$active_interface" | grep -oP '(?<=inet\s)\d+(\.\d+){3}')fiPUBLIC_IP=$(curl -s https://api64.ipify.org)if [[ -z "$PUBLIC_IP" ]]; thenPUBLIC_IP="N/A"fiif echo "$PUBLIC_IP" | grep -q ":"; thenPUBLIC_IP=[${PUBLIC_IP}]1pctl listen-ip ipv6fi
}function main(){Check_RootInstall_DockerInstall_Compose
}
main

当然,你也可以用下面这个在线脚本进行安装。

curl -sSL https://file.ewbang.com/docker/debian/install_docker.sh -o install_docker.sh && bash install_docker.sh

二、卸载Docker

#!/bin/bash# 停止 Docker 服务
echo "Stopping Docker service..."
sudo systemctl stop docker# 卸载 Docker 相关软件包
echo "Removing Docker packages..."
sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 删除 Docker 数据
echo "Deleting Docker data..."
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd# 删除 Docker 配置文件
echo "Deleting Docker configuration..."
sudo rm -rf /etc/docker# 自动清理不需要的软件包
echo "Cleaning up..."
sudo apt-get autoremove -y
sudo apt-get updateecho "Docker uninstalled successfully."

同样,下面也提供在线脚本。

curl -sSL https://file.ewbang.com/docker/debian/uninstall_docker.sh -o uninstall_docker.sh && bash uninstall_docker.sh

相关文章:

如何在Debian操作系统上安装Docker

本章教程&#xff0c;主要介绍如何在Debian 11 系统上安装Docker。主要使用一键安装Docker脚本和一键卸载脚本来完成。 一、安装Docker #!/bin/bashRED\033[0;31m GREEN\033[0;32m YELLOW\033[0;33m BLUE\033[0;34m NC\033[0mCURRENT_DIR$(cd "$(dirname "$0")…...

ArrayList和Array、LinkedList、Vector 间的区别

一、ArrayList 和 Array 的区别 ArrayList 内部基于动态数组实现&#xff0c;比 Array&#xff08;静态数组&#xff09; 使用起来更加灵活&#xff1a; ArrayList 会根据实际存储的元素动态地扩容或缩容&#xff0c;而 Array 被创建之后就不能改变它的长度了。ArrayList 允许…...

Linux开发环境配置(下)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…...

系统开发常用命令合集

本文还会持续更新&#xff0c;大家可以点赞收藏~ ifconfig ifconfigwlan0表示无线网络接口 eth0表示以太网接口&#xff08;有线&#xff09; HWaddr是接口的物理地址&#xff08;MAC地址&#xff09; inet addr是接口的IPv4地址 Bcast是广播地址&#xff0c;Mask是子网掩码 …...

Termius工具在MAC的使用出现的问题:

Termius工具在MAC的使用出现的问题&#xff1a; 在使用SFTP时&#xff0c;出现不了本地的文件的位置 解决方案&#xff1a; 在Apple store下载的使用不了LOCAL SFTP&#xff0c; 需要在网页上进行下载才可以&#xff1a; 官网下载地址&#xff1a;https://termius.com/down…...

浅析Android中View的绘制流程

前言 在《浅析Android中View的测量布局流程》中分析了VSYNC信号到达App进程之后开启的View布局过程&#xff0c;经过对整个View树进行遍历进行测量和布局&#xff0c;最终确定View的大小以及在屏幕中所处的位置。但是如果用户想在屏幕上看到View的内容还需要经过绘制来生成图形…...

pikachu靶场- 文件上传unsafe upfileupload

pikachu靶场- unsafe upfileupload 概述client checkMIME typegetimagesize() 概述 不安全的文件上传漏洞概述 文件上传功能在web应用系统很常见&#xff0c;比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后&#xff0c;后台会对上传的文件进行判断…...

java中this的内存原理是?

在Java中&#xff0c;this关键字是一个特殊的引用&#xff0c;指向当前对象的实例。它在以下几个方面发挥重要作用&#xff1a; 指向当前对象&#xff1a;this可以用来访问当前对象的属性和方法&#xff0c;尤其在参数命名与实例变量重名时&#xff0c;用于区分。 构造函数&a…...

Matlab 车牌识别技术

1.1设计内容及要求&#xff1a; 课题研究的主要内容是对数码相机拍摄的车牌&#xff0c;进行基于数字图像处理技术的车牌定位技术和车牌字符分割技术的研究与开发&#xff0c;涉及到图像预处理、车牌定位、倾斜校正、字符分割等方面的知识,总流程图如图1-1所示。 图1-1系统总…...

CUDA-求最大值最小值atomicMaxatomicMin

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 实现原理 atomicMax和 atomicMin是 CUDA 中的原子操作&#xff0c;用于在并行计算中安全地更新共享变量的最大值和最小值。它们确…...

新的Midjourney就是一个增强版的Photoshop,你现在可以轻松的用它换衣服、换发型了

好久没有聊 Midjourney 了&#xff0c;昨晚他们发布了一项引人注目的新功能&#xff1a;AI 图像编辑&#xff0c;一个基于网页的加强版的 Photoshop 呼之欲出&#xff0c;让我大为震撼&#xff0c;也让用户们赞叹不已。 基于现有图像进行参考&#xff0c;进而生成新的图片&…...

Linux系统安装软件的4种方式【源码配置编译安装、yum安装、rpm包安装、二进制软件包安装(.rpm/.tar.gz/.tgz/.bz2)】

一.源码安装 linux安装软件采用源码安装灵活自由&#xff0c;适用于不同的平台&#xff0c;维护也十分方便。 &#xff08;一&#xff09;源码安装流程  源码的安装一般由3个步骤组成&#xff1a; 1.配置&#xff08;configure&#xff09; Configure是一个可执行脚本…...

基于Spring Boot的洪涝灾害应急信息管理系统设计与实现

摘要 近年来&#xff0c;全球气候变化加剧&#xff0c;洪涝灾害频发&#xff0c;给各国的经济发展和人民生活带来了巨大的威胁。为了提高洪涝灾害的应急响应能力&#xff0c;开发高效的应急信息管理系统变得至关重要。本文基于Spring Boot框架&#xff0c;设计并实现了一个洪涝…...

912.排序数组(桶排序)

目录 题目解法 题目 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 你必须在 不使用任何内置函数 的情况下解决问题&#xff0c;时间复杂度为 O(nlog(n))&#xff0c;并且空间复杂度尽可能小。 解法 class Solution { public:vector<int> sortArray(vect…...

IPC 进程间通信 消息队列

操作系统内核中采用一个链式队列管理消息,每个节点就对应一个消息&#xff1a; 操作系统规定了单个消息的数据长度不能超过8k(8192个字节)&#xff0c;一个消息队列的表长(节点数)最多不超过256个 利用消息队列进行通信的特点&#xff1a; 1. 全双工&#xff1a;任何参与通信的…...

opencv 图像翻转- python 实现

在做图像数据增强时会经常用到图像翻转操作 flip。 具体代码实现如下&#xff1a; #-*-coding:utf-8-*- # date:2021-03 # Author: DataBall - XIAN # Function: 图像翻转import cv2 # 导入OpenCV库path test.jpgimg cv2.imread(path)# 读取图片 cv2.namedWindow(image,1) …...

使用DolphinScheduler接口实现批量导入工作流并上线

使用DS接口实现批量导入工作量并上线脚本 前面实现了批量生成DS的任务&#xff0c;当导入时发现只能逐个导入&#xff0c;因此通过接口实现会更方便。 DS接口文档 DS是有接口文档的地址是 http://IP:12345/dolphinscheduler/swagger-ui/index.html?languagezh_CN&lang…...

pycharm导出环境安装包列表

pycharm导出环境安装包列表 一、导出安装包列表二、安装requirements.txt三、列表显示已安装的包四、显示特定包的信息 一、导出安装包列表 pip freeze > requirements.txt二、安装requirements.txt pip install -r requirements.txt三、列表显示已安装的包 pip list四、…...

分体式智能网关在现代电力物联网中的优势有哪些?

随着电力系统的不断数字化和智能化&#xff0c;电力物联网已经成为现代电力行业发展的重要方向。电力物联网通过各种智能设备和传感器实现电力系统的监测、数据采集和分析&#xff0c;从而优化电力资源配置&#xff0c;提高电网的安全性和稳定性。在这个背景下&#xff0c;&quo…...

第14篇:下一代网络与新兴技术

目录 引言 14.1 下一代网络&#xff08;NGN&#xff09;的定义与特点 14.2 IPv6协议的改进与未来应用 14.3 软件定义网络&#xff08;SDN&#xff09; 14.4 网络功能虚拟化&#xff08;NFV&#xff09; 14.5 量子通信网络 14.6 软件定义广域网&#xff08;SD-WAN&#x…...

物联网数据采集网关详细介绍-天拓四方

一、物联网数据采集网关的概述 物联网数据采集网关&#xff0c;简称数据采集网关&#xff0c;是物联网系统中的重要组成部分&#xff0c;位于物联网设备和云端平台之间。其主要职责是实现数据的采集、汇聚、转换、传输等功能&#xff0c;确保来自不同物联网设备的数据能够统一…...

2024软考网络工程师笔记 - 第10章.组网技术

文章目录 交换机基础1️⃣交换机分类2️⃣其他分类方式3️⃣级联和堆叠4️⃣堆叠优劣势5️⃣交换机性能参数 &#x1f551;路由器基础1️⃣路由器接口2️⃣交换机路由器管理方式2️⃣交换机路由器管理方式 交换机基础 1️⃣交换机分类 1.根据交换方式分 存储转发式交换(Store…...

C语言——字符串指针和字符串数组

目录 前言 一、定义区别 1、数组表示 2、指针表示 二、内存管理区别 1.字符数组 2.字符指针 三、操作区别 1、访问与修改 2、遍历 3...... 总结 前言 在C语言中&#xff0c;字符串随处可见&#xff0c;字符串是由字符组成的一串数据&#xff0c;字符串以null字符(\0)结尾&#…...

7-1回文判断(栈和队列PTA)

回文是指正读反读均相同的字符序列&#xff0c;如“abba”和“abdba”均是回文&#xff0c;但“good”不是回文。编写一个程序&#xff0c;使用栈判定给定的字符序列是否为回文。 若用C&#xff0c;可借助STL的容器实现。 输入格式: 输入待判断的字符序列&#xff0c;按回车…...

使用 NCC 和 PKG 打包 Node.js 项目为可执行文件(Linux ,macOS,Windows)

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 &#x1f4d8; 文章引言 步骤 1&#xff1a;…...

LeetCode:2747. 统计没有收到请求的服务器数目(滑动窗口 Java)

目录 2747. 统计没有收到请求的服务器数目 题目描述&#xff1a; 实现代码与解析&#xff1a; 滑动窗口 原理思路&#xff1a; 2747. 统计没有收到请求的服务器数目 题目描述&#xff1a; 给你一个整数 n &#xff0c;表示服务器的总数目&#xff0c;再给你一个下标从 0 开…...

项目管理工具--【项目策划任务书】模板

项目策划任务书是项目管理中的重要文件&#xff0c;它详细描述了项目的各个方面&#xff0c;以确保项目能够顺利进行。撰写项目策划任务书时需要考虑以下几个关键要素&#xff1a; 基本信息&#xff1a;包括项目名称、负责人、所在单位、联系方式以及日期等基本信息&#xff0c…...

雷池社区版那么火,为什么站长都使用雷池社区版??

雷池社区版是长亭科技开发的一款免费开源的 Web 应用防火墙&#xff08;WAF&#xff09;&#xff0c;具有诸多优势&#xff0c;因此值得使用。 防护效果强大。能够检测并防御各种网络攻击&#xff0c;包括 SQL 注入、跨站脚本&#xff08;XSS&#xff09;、跨站请求伪造&#x…...

分布式日志有哪些?

分布式日志系统&#xff08;Distributed Logging Systems&#xff09;是在分布式计算环境中用来收集、存储和管理来自多个节点的日志数据的系统。这些系统通常设计用于处理高并发、大规模的日志数据流&#xff0c;并提供强大的查询和分析功能。 一、定义与背景 分布式系统通常…...

ETCD未授权访问风险基于角色认证和启用https的ca证书修复方案

ETCD未授权访问风险安全漏洞修复方案 ETCD未授权访问风险介绍基于角色认证的访问控制&#xff08;BASIC认证&#xff09;基于ca证书的https访问控制&#xff08;TLS传输&#xff09;下载cfssl认证配置工具生成ca认证证书修改etcd配置方式一方式二 访问etcd节点信息 patroni使用…...

哪个网站可以做淘宝代码/推广app赚佣金接单平台

由于工作的需要&#xff0c;经常需要进行可视化展示&#xff0c;除了一些常用的BI工具&#xff0c;我也会使用python对数据进行可视化。python的第三方可视化库有很多&#xff0c;比如matplotlib、seaborn、plotly、bokeh、pyecharts等等。这次就来说一说&#xff0c;如何用pyt…...

深圳专业做网站/自动app优化下载

Anomaly Detection with partially Observed Anomalies论文笔记 标签&#xff08;空格分隔&#xff09;&#xff1a; 异常检测 一、 通过比较引出论文提出的方法 PU&#xff08;positive and Unlabled&#xff09;learning 如果我们把异常视为这里的Positive Sample&#xff…...

能够做代理的网站有哪些/杭州网站优化效果

part1 首先我们知道&#xff0c;eval能执行php代码&#xff0c;最常见的php一句话也是用eval关键字的。 <?php eval($_GET["code"])?> Part2 在T00ls论坛混的时候&#xff0c;有一个现象&#xff0c;如果有人分享免杀一句话&#xff0c;里面用了 eval 这个关…...

网站页头是什么/中国市场营销网网站

点击上方蓝字,记得关注我们&#xff01;win10原装的主题&#xff0c;老套的桌面布局&#xff0c;已经让许多人心生疲倦再看看美化后的桌面▼▼爱了爱了&#xff0c;废话不多说&#xff0c;上教程▼▼工具下载下载链接&#xff1a;https://pan.baidu.com/s/19jPqMtFD-bavRhc-OSw…...

企业网站制作心得/外链信息

分层好处&#xff1a; 1&#xff0c;复杂问题简单化&#xff1a;将复杂的任务分解成多层来完成&#xff0c;每一层只处理简单的任务&#xff0c;方便定位问题 2&#xff0c;减少重复开发&#xff1a;规范数据分层&#xff0c;通过中间层数据&#xff0c;能够减少极大的重复计算…...

wordpress robots写法/网络舆情报告

本篇介绍一些关于C语言的时间计算的函数如时间戳、当前时间、当前本地时间、时区时间、时间差以及时间的字符串字符串格式化等。 /* * Author:W&#xff1b; * 时间函数 *///引入头文件&#xff1a;头文件包含了程序中必需的或有用的信息【单行注释】 #include <iostream&g…...