From d5f691370d25d63933a67ef5d035393f5a5e713a Mon Sep 17 00:00:00 2001 From: huty Date: Wed, 19 Mar 2025 17:17:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Edocker-tools=E5=B7=A5?= =?UTF-8?q?=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 32 ++++++ docker-tools | 287 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 319 insertions(+) create mode 100755 docker-tools diff --git a/README.md b/README.md index 3ba2f50..a6c946a 100644 --- a/README.md +++ b/README.md @@ -188,3 +188,35 @@ sp 代理URL ``` bash sp 192.168.1.100:30000 ``` + +
+ +## docker-tools + + Docker 工具 + +选项说明: + +- `version`: 查看工具版本 +- `info`: 查看 Docker 信息 +- `install: 安装 Docker +- `uninstall`: 卸载 Docker +- `start`: 启动 Docker +- `stop`: 停止 Docker +- `restart`: 重启 Docker +- `update`: 更新 Docker 版本 + +参数说明: + +- `-v`: Docker 版本 +- `-i`: Docker 安装目录 +- `-d`: Docker 数据目录 +- `-p`: Docker 安装包名称(可选,仅离线安装时需要) + +示例: + +- 查看 Docker 信息: docker-tools info +- 安装 Docker (使用默认配置): docker-tools install +- 安装 Docker (使用自定义配置): docker-tools install -v 28.0.1 -i /data/docker/bin -d /data/docker/data +- 卸载 Docker : docker-tools uninstall +- 启动 Docker : docker-tools start diff --git a/docker-tools b/docker-tools new file mode 100755 index 0000000..4667840 --- /dev/null +++ b/docker-tools @@ -0,0 +1,287 @@ +#!/bin/bash + +# Docker 工具 + +# 参数配置 +## 版本号 +VERSION=0.1.0 +## 当前的日期、日期时间 +DATE=`date +%Y%m%d` +DATETIME=`date +%Y%m%d`_`date +%H%M%S` +## Docker 版本号 +DOCKER_VERSION=28.0.1 +## Docker 安装目录 +DOCKER_INSTALL_DIR=/opt/docker/bin +## Docker 数据目录 +DOCKER_DATA_DIR=/opt/docker/data +## 是否离线安装 +NEED_OFFLINE_INSTALL=false +## 安装包下载地址(在线安装时使用) +PACKAGE_URL=https://download.docker.com/linux/static/stable +## 安装包名称(离线安装时使用) +PACKAGE_NAME=docker-28.0.1.tgz +## CPU 架构 +CPU_ARCH=x86_64 + +# 相关方法 +## 帮助信息 +help () { + echo '使用方式: docker-tools 选项 参数' + echo '选项说明:' + echo ' version: 查看工具版本' + echo ' info: 查看 Docker 信息' + echo ' install: 安装 Docker' + echo ' uninstall: 卸载 Docker' + echo ' start: 启动 Docker' + echo ' stop: 停止 Docker' + echo ' restart: 重启 Docker' + echo ' update: 更新 Docker 版本' + echo '参数说明:' + echo ' -v: Docker 版本' + echo ' -i: Docker 安装目录' + echo ' -d: Docker 数据目录' + echo ' -p: Docker 安装包名称(可选,仅离线安装时需要)' + echo '示例:' + echo ' 查看 Docker 信息: docker-tools info' + echo ' 安装 Docker (使用默认配置): docker-tools install' + echo ' 安装 Docker (使用自定义配置): docker-tools install -v 28.0.1 -i /data/docker/bin -d /data/docker/data' + echo ' 卸载 Docker : docker-tools uninstall' + echo ' 启动 Docker : docker-tools start' +} + +## 版本号 +version () { + echo 'docker-tools '$VERSION +} + +## 设置 CPU 架构 +setCPUArch () { + echo '------------------------------ 开始设置 CPU 架构... ------------------------------' + + $CPU_ARCH=`arch` + + echo '------------------------------ CPU 架构设置完成! ------------------------------' +} + +## 创建目录 +createDir () { + echo '------------------------------ 开始创建相关目录... ------------------------------' + + mkdir -pv $DOCKER_INSTALL_DIR + mkdir -pv $DOCKER_DATA_DIR + mkdir -pv /etc/docker + + echo '------------------------------ 所需目录创建完成! ------------------------------' +} + +## 创建用户 +createUser () { + echo '------------------------------ 开始创建 Docker 用户... ------------------------------' + + groupadd -r -g 1001 docker + useradd -r -g docker -u 1001 -d /home/docker -s /bin/bash docker + + echo '------------------------------ Docker 用户创建完成! ------------------------------' +} + +## 配置系统参数 +configSystem () { + echo '------------------------------ 开始配置系统参数... ------------------------------' + + modprobe br_netfilter + echo 'net.bridge.bridge-nf-call-ip6tables = 1' > /etc/sysctl.d/docker.conf + echo 'net.bridge.bridge-nf-call-iptables = 1' >> /etc/sysctl.d/docker.conf + echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.d/docker.conf + sysctl --system + + echo '------------------------------ 系统参数配置完成! ------------------------------' +} + +## 下载安装包 +downloadInstallPackage () { + echo '------------------------------ 开始下载 Docker 安装包... ------------------------------' + + wget $PACKAGE_URL/$CPU_ARCH/docker-$DOCKER_VERSION.tgz + PACKAGE_NAME=docker-$DOCKER_VERSION.tgz + + echo '------------------------------ Docker 安装包下载完成! ------------------------------' +} + +## 安装 Docker +installDockerEngine () { + echo '------------------------------ 开始安装 Docker Engine... ------------------------------' + + tar zxvf $PACKAGE_NAME -C $DOCKER_INSTALL_DIR --strip-components 1 + + echo '------------------------------ Docker Engine 安装完成! ------------------------------' +} + +## 配置环境变量 +configEnv () { + echo '------------------------------ 开始配置环境变量... ------------------------------' + + cp -rpf ~/.bashrc ~/.bashrc.bak.$DATE + echo '# Docker Env Begin' >> ~/.bashrc + echo 'export DOCKER_HOME='$DOCKER_INSTALL_DIR >> ~/.bashrc + echo 'export PATH=$PATH:$DOCKER_HOME' >> ~/.bashrc + echo '# Docker Env End' >> ~/.bashrc + source ~/.bashrc + + cp -rpf /etc/profile /etc/profile.bak.$DATE + echo '# Docker Env Begin' >> /etc/profile + echo 'export DOCKER_HOME='$DOCKER_INSTALL_DIR >> /etc/profile + echo 'export PATH=$PATH:$DOCKER_HOME' >> /etc/profile + echo '# Docker Env End' >> /etc/profile + source /etc/profile + + echo '------------------------------ 环境变量配置完成! ------------------------------' +} + +## 配置系统服务 +configService () { + echo '------------------------------ 开始配置系统服务... ------------------------------' + + sed -i 's#/opt/docker/bin#'$DOCKER_INSTALL_DIR'#g' docker.service + cp -rpf docker.service /usr/lib/systemd/system/docker.service + cp -rpf docker.socket /usr/lib/systemd/system/docker.socket + systemctl daemon-reload + + echo '------------------------------ 系统服务配置完成! ------------------------------' +} + +## 配置 Docker +configDocker () { + echo '------------------------------ 开始配置 Docker... ------------------------------' + + ed -i 's#/opt/docker/data#'$DOCKER_DATA_DIR'#g' daemon.json + cp -rpf daemon.json /etc/docker/daemon.json + + chmod -R docker.docker $DOCKER_INSTALL_DIR + chmod -R 755 $DOCKER_INSTALL_DIR + chmod -R docker.docker $DOCKER_DATA_DIR + hmod -R 755 $DOCKER_DATA_DIR + + echo '------------------------------ Docker 配置完成! ------------------------------' +} + +## 启动 Docker +startD () { + echo '------------------------------ 开始启动 Docker... ------------------------------' + + systemctl start docker + systemctl enable docker + + echo '------------------------------ Docker 启动完成! ------------------------------' +} + +## 停止 Docker +stopD () { + echo '------------------------------ 开始停止 Docker... ------------------------------' + + systemctl stop docker + systemctl disenable docker + + echo '------------------------------ Docker 停止完成! ------------------------------' +} + +## 重启 Docker +restartD () { + stop + start +} + +## 查询 Dokcer 信息 +info () { + echo '------------------------------ 开始查询 Docker 信息... ------------------------------' + + echo '------------------------------ Docker 信息查询完成! ------------------------------' +} + +## 安装 Docker +install () { + echo '====================================================================================================' + echo `date +%Y-%m-%d` `date +%H:%M:%S` + echo '============================== 开始安装 Docker ...... ==============================' + + echo $DOCKER_VERSION + echo $DOCKER_INSTALL_DIR + echo $DOCKER_DATA_DIR + echo $NEED_OFFLINE_INSTALL + echo $PACKAGE_URL + echo $PACKAGE_NAME + echo $CPU_ARCH + + setCPUArch + createDir + createUser + configSystem + if [ !$NEED_OFFLINE_INSTALL ];then + downloadInstallPackage + fi + installDockerEngine + configEnv + configService + configDocker + startD + + echo '------------------------------ Docker 安装完成! ------------------------------' + echo '============================== Docker 安装完成!!! ==============================' + echo `date +%Y-%m-%d` `date +%H:%M:%S` + echo '====================================================================================================' +} + +# 初始化选项 +while getopts "v:i:d:p:" opt; do + case $opt in + v) + DOCKER_VERSION="$OPTARG" + echo $DOCKER_VERSION + ;; + i) + DOCKER_INSTALL_DIR="$OPTARG" + echo $DOCKER_INSTALL_DIR + ;; + d) + DOCKER_DATA_DIR="$OPTARG" + echo $DOCKER_DATA_DIR + ;; + p) + NEED_OFFLINE_INSTALL=true + PACKAGE_NAME="$OPTARG" + echo $PACKAGE_NAME + ;; + esac +done + +# 移除已经使用的参数 +shift $((OPTIND-1)) + +# 根据参数执行方法 +case $@ in + help) + help + ;; + version) + version + ;; + install) + install + ;; + info) + info + ;; + startD) + startD + ;; + stopD) + stopD + ;; + restart) + restartD + ;; + *) + help + ;; + +esac +