首页 > Python资料 博客日记
如何在Debian操作系统上安装Doker
2024-10-24 21:00:12Python资料围观35次
这篇文章介绍了如何在Debian操作系统上安装Doker,分享给大家做个参考,收藏Python资料网收获更多编程知识
本章教程,主要介绍如何在Debian 11 系统上安装Docker。主要使用一键安装Docker脚本和一键卸载脚本来完成。
一、安装Docker
#!/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m'
CURRENT_DIR=$(
cd "$(dirname "$0")" || exit
pwd
)
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 ]]; then
log "请使用 root 或 sudo 权限运行此脚本"
exit 1
fi
}
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/docker
echo '{
"registry-mirrors": ["'"$ACCELERATOR_URL"'"]
}' | tee "$DAEMON_JSON" > /dev/null
log "镜像加速配置已添加。"
}
function configure_accelerator() {
read -p "是否配置镜像加速?(y/n): " configure_accelerator
if [[ "$configure_accelerator" == "y" ]]; then
if [ -f "$DAEMON_JSON" ]; then
log "配置文件已存在,我们将备份现有配置文件为 ${BACKUP_FILE} 并创建新的配置文件。"
cp "$DAEMON_JSON" "$BACKUP_FILE"
create_daemon_json
else
create_daemon_json
fi
log "正在重启 Docker 服务..."
systemctl daemon-reload
systemctl restart docker
log "Docker 服务已成功重启。"
else
log "未配置镜像加速。"
fi
}
function Install_Docker(){
if which docker >/dev/null 2>&1; then
log "检测到 Docker 已安装,跳过安装步骤"
configure_accelerator
else
log "... 在线安装 docker"
if [[ $(curl -s ipinfo.io/country) == "CN" ]]; then
sources=(
"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=$1
local total_delay=0
local iterations=2
local timeout=2
for ((i = 0; i < iterations; i++)); do
delay=$(curl -o /dev/null -s -m $timeout -w "%{time_total}\n" "$source")
if [ $? -ne 0 ]; then
delay=$timeout
fi
total_delay=$(awk "BEGIN {print $total_delay + $delay}")
done
average_delay=$(awk "BEGIN {print $total_delay / $iterations}")
echo "$average_delay"
}
min_delay=99999999
selected_source=""
for source in "${sources[@]}"; do
average_delay=$(get_average_delay "$source" &)
if (( $(awk 'BEGIN { print '"$average_delay"' < '"$min_delay"' }') )); then
min_delay=$average_delay
selected_source=$source
fi
done
wait
if [ -n "$selected_source" ]; then
log "选择延迟最低的源 $selected_source,延迟为 $min_delay 秒"
export DOWNLOAD_URL="$selected_source"
for alt_source in "${docker_install_scripts[@]}"; do
log "尝试从备选链接 $alt_source 下载 Docker 安装脚本..."
if curl -fsSL --retry 2 --retry-delay 3 --connect-timeout 5 --max-time 10 "$alt_source" -o get-docker.sh; then
log "成功从 $alt_source 下载安装脚本"
break
else
log "从 $alt_source 下载安装脚本失败,尝试下一个备选链接"
fi
done
if [ ! -f "get-docker.sh" ]; then
log "所有下载尝试都失败了。您可以尝试手动安装 Docker,运行以下命令:"
log "bash <(curl -sSL https://linuxmirrors.cn/docker.sh)"
exit 1
fi
sh get-docker.sh 2>&1 | tee -a ${CURRENT_DIR}/install.log
docker_config_folder="/etc/docker"
if [[ ! -d "$docker_config_folder" ]];then
mkdir -p "$docker_config_folder"
fi
docker version >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
log "docker 安装失败\n您可以尝试使用离线包进行安装,具体安装步骤请参考以下链接:https://1panel.cn/docs/installation/package_installation/"
exit 1
else
log "docker 安装成功"
systemctl enable docker 2>&1 | tee -a "${CURRENT_DIR}"/install.log
configure_accelerator
fi
else
log "无法选择源进行安装"
exit 1
fi
else
log "非中国大陆地区,无需更改源"
export DOWNLOAD_URL="https://download.docker.com"
curl -fsSL "https://get.docker.com" -o get-docker.sh
sh get-docker.sh 2>&1 | tee -a "${CURRENT_DIR}"/install.log
log "... 启动 docker"
systemctl enable docker; systemctl daemon-reload; systemctl start docker 2>&1 | tee -a "${CURRENT_DIR}"/install.log
docker_config_folder="/etc/docker"
if [[ ! -d "$docker_config_folder" ]];then
mkdir -p "$docker_config_folder"
fi
docker version >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
log "docker 安装失败\n您可以尝试使用安装包进行安装,具体安装步骤请参考以下链接:https://1panel.cn/docs/installation/package_installation/"
exit 1
else
log "docker 安装成功"
fi
fi
fi
}
function Install_Compose(){
docker-compose version >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
log "... 在线安装 docker-compose"
arch=$(uname -m)
if [ "$arch" == 'armv7l' ]; then
arch='armv7'
fi
curl -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.log
if [[ ! -f /usr/local/bin/docker-compose ]];then
log "docker-compose 下载失败,请稍候重试"
exit 1
fi
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose version >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
log "docker-compose 安装失败"
exit 1
else
log "docker-compose 安装成功"
fi
else
compose_v=$(docker-compose -v)
if [[ $compose_v =~ 'docker-compose' ]];then
read -p "检测到已安装 Docker Compose 版本较低(需大于等于 v2.0.0 版本),是否升级 [y/n] : " UPGRADE_DOCKER_COMPOSE
if [[ "$UPGRADE_DOCKER_COMPOSE" == "Y" ]] || [[ "$UPGRADE_DOCKER_COMPOSE" == "y" ]]; then
rm -rf /usr/local/bin/docker-compose /usr/bin/docker-compose
Install_Compose
else
log "Docker Compose 版本为 $compose_v,可能会影响应用商店的正常使用"
fi
else
log "检测到 Docker Compose 已安装,跳过安装步骤"
fi
fi
}
function Get_Ip(){
active_interface=$(ip route get 8.8.8.8 | awk 'NR==1 {print $5}')
if [[ -z $active_interface ]]; then
LOCAL_IP="127.0.0.1"
else
LOCAL_IP=$(ip -4 addr show dev "$active_interface" | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
fi
PUBLIC_IP=$(curl -s https://api64.ipify.org)
if [[ -z "$PUBLIC_IP" ]]; then
PUBLIC_IP="N/A"
fi
if echo "$PUBLIC_IP" | grep -q ":"; then
PUBLIC_IP=[${PUBLIC_IP}]
1pctl listen-ip ipv6
fi
}
function main(){
Check_Root
Install_Docker
Install_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 update
echo "Docker uninstalled successfully."
同样,下面也提供在线脚本。
curl -sSL https://file.ewbang.com/docker/debian/uninstall_docker.sh -o uninstall_docker.sh && bash uninstall_docker.sh
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj