新增docker-tools工具

This commit is contained in:
huty 2025-03-19 17:17:44 +08:00
parent f8ae17363c
commit d5f691370d
2 changed files with 319 additions and 0 deletions

@ -188,3 +188,35 @@ sp 代理URL
``` bash
sp 192.168.1.100:30000
```
<br/>
## 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

287
docker-tools Executable file

@ -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