Files
shell_tools/docker-tools
2025-03-19 17:17:44 +08:00

288 lines
7.8 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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