更新docker-tools

This commit is contained in:
huty 2025-03-20 17:22:29 +08:00
parent ac88cd114a
commit b50d06ac16
4 changed files with 409 additions and 72 deletions

17
docker-tools/daemon.json Normal file

@ -0,0 +1,17 @@
{
"exec-opts" : ["native.cgroupdriver=systemd"],
"log-level": "warn",
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "5"
},
"registry-mirrors": [
"https://dockerpull.org",
"https://hub.geekery.cn",
"https://docker.1ms.run"
],
"bip": "10.21.21.1/24",
"data-root": "/opt/docker/data",
"live-restore": true
}

@ -4,61 +4,86 @@
# 参数配置
## 版本号
VERSION=0.1.0
VERSION=1.0.0
## 当前的日期、日期时间
DATE=`date +%Y%m%d`
DATETIME=`date +%Y%m%d`_`date +%H%M%S`
## Docker 版本号
DOCKER_VERSION=28.0.1
## 服务器 CPU 架构
CPU_ARCH=x86_64
## 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
## 是否安装 Docker Engine
NEED_INSTALL_ENGINE=true
## Docker 版本号
DOCKER_VERSION=28.0.1
## Docker 安装包下载地址(在线安装时使用)
DOCKER_PACKAGE_URL=https://download.docker.com/linux/static/stable
## Docker 安装包名称(离线安装时使用)
DOCKER_PACKAGE_NAME=docker-28.0.1.tgz
## 是否安装 Docker Compose
NEED_INSTALL_COMPOSE=true
## Docker Compose 版本号
DOCKER_COMPOSE_VERSION=v2.34.0
## Docker Compose 安装包下载地址(在线安装时使用)
DOCKER_COMPOSE_PACKAGE_URL=https://github.com/docker/compose/releases/download
## Docker Compose 安装包名称(离线安装时使用)
DOCKER_COMPOSE_PACKAGE_NAME=docker-compose-linux-x86_64
## 是否需要设置 Docker 开机自启动
NEED_ENABLE_DOCKER=true
# 相关方法
## 帮助信息
help () {
echo '使用方式: docker-tools 选项 参数'
version
echo ''
echo '使用方式: docker-tools 参数 选项'
echo '参数说明:'
echo ' -v Docker 版本(可选,默认安装 28.0.1 版本)'
echo ' -i Docker 安装目录(可选,默认为 /opt/docker/bin'
echo ' -d Docker 数据目录(可选,默认为 /opt/docker/data'
echo ' -p Docker 安装包名称(可选,仅离线安装时使用,默认为在线安装)'
echo ' -c Docker Compose 版本(可选,默认安装 v2.34.0 版本)'
echo ' -n Docker Compose 安装包名称(可选,仅离线安装时使用,默认为在线安装)'
echo ' -a 仅安装 Docker Engine可选默认安装 Docker Engine 和 Docker Compose '
echo ' -b 仅安装 Docker Compose可选默认安装 Docker Engine 和 Docker Compose '
echo '选项说明:'
echo ' version 查看工具版本'
echo ' info 查看 Docker 信息'
echo ' install 安装 Docker'
echo ' uninstall 卸载 Docker'
echo ' start 启动 Docker'
echo ' stop 停止 Docker'
echo ' restart 重启 Docker'
echo ' enable 设置 Docker 开机自启动'
echo ' disable 取消 Docker 开机自启动'
echo ' update 更新 Docker 版本'
echo '参数说明:'
echo ' -v Docker 版本'
echo ' -i Docker 安装目录'
echo ' -d Docker 数据目录'
echo ' -p Docker 安装包名称(可选,仅离线安装时需要)'
echo ' info 查看 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'
echo ' 安装 Docker (使用默认配置) docker-tools install'
echo ' 安装 Docker (使用自定义配置) docker-tools -v 28.0.1 -i /data/docker/bin -d /data/docker/data -p docker-28.0.1.tgz -c v2.34.0 -n docker-compose-linux-x86_64 install'
echo ' 安装 Docker (仅安装 Docker Engine docker-tools -oe install'
echo ' 安装 Docker (仅安装 Docker Compose docker-tools -oc install'
echo ' 卸载 Docker (使用默认配置) docker-tools uninstall'
echo ' 卸载 Docker (使用自定义配置) docker-tools -v 28.0.1 -i /data/docker/bin -d /data/docker/data -p docker-28.0.1.tgz -c v2.34.0 -n docker-compose-linux-x86_64 uninstall'
echo ' 重启 Docker docker-tools restart'
echo ' 设置 Docker 开机自启动 docker-tools enable'
echo ' 取消 Docker 开机自启动 docker-tools disable'
echo ' 查看 Docker 信息 docker-tools info'
}
## 版本号
version () {
echo 'docker-tools '$VERSION
echo 'docker-tools '$VERSION' HTY1024 '
}
## 设置 CPU 架构
setCPUArch () {
## 查询 CPU 架构
searchCPUArch () {
echo '------------------------------ 开始设置 CPU 架构... ------------------------------'
$CPU_ARCH=`arch`
CPU_ARCH=`arch`
echo '------------------------------ CPU 架构设置完成! ------------------------------'
}
@ -74,6 +99,17 @@ createDir () {
echo '------------------------------ 所需目录创建完成! ------------------------------'
}
## 删除目录
deleteDir () {
echo '------------------------------ 开始删除相关目录... ------------------------------'
rm -rf $DOCKER_INSTALL_DIR
rm -rf $DOCKER_DATA_DIR
rm -rf /etc/docker
echo '------------------------------ 相关目录删除完成! ------------------------------'
}
## 创建用户
createUser () {
echo '------------------------------ 开始创建 Docker 用户... ------------------------------'
@ -84,6 +120,17 @@ createUser () {
echo '------------------------------ Docker 用户创建完成! ------------------------------'
}
## 删除用户
deleteUser () {
echo '------------------------------ 开始删除 Docker 用户... ------------------------------'
groupdel docker
userdel docker
echo '------------------------------ Docker 用户删除完成! ------------------------------'
}
## 配置系统参数
configSystem () {
echo '------------------------------ 开始配置系统参数... ------------------------------'
@ -97,25 +144,73 @@ configSystem () {
echo '------------------------------ 系统参数配置完成! ------------------------------'
}
## 下载安装包
downloadInstallPackage () {
## 移除参数
removeSystemConfig () {
echo '------------------------------ 开始删除系统参数... ------------------------------'
rm -rf /etc/sysctl.d/docker.conf
sysctl --system
echo '------------------------------ 系统参数删除完成! ------------------------------'
}
## 下载 Docker 安装包
downloadDockerEnginePackage () {
echo '------------------------------ 开始下载 Docker 安装包... ------------------------------'
wget $PACKAGE_URL/$CPU_ARCH/docker-$DOCKER_VERSION.tgz
PACKAGE_NAME=docker-$DOCKER_VERSION.tgz
wget $DOCKER_PACKAGE_URL/$CPU_ARCH/docker-$DOCKER_VERSION.tgz
$DOCKER_PACKAGE_NAME=docker-$DOCKER_VERSION.tgz
echo '------------------------------ Docker 安装包下载完成! ------------------------------'
}
## 安装 Docker
## 删除 Docker 安装包
removeDockerEnginePackage () {
echo '------------------------------ 开始删除 Docker 安装包... ------------------------------'
rm -rf $DOCKER_PACKAGE_NAME
echo '------------------------------ Docker 安装包删除完成! ------------------------------'
}
## 下载 Docker Compose 安装包
downloadDockerComposePackage () {
echo '------------------------------ 开始下载 Docker Compose 安装包... ------------------------------'
wget $DOCKER_COMPOSE_PACKAGE_URL/$DOCKER_COMPOSE_VERSION/docker-compose-linux-$CPU_ARCH
$DOCKER_COMPOSE_PACKAGE_NAME=docker-compose-linux-$CPU_ARCH
echo '------------------------------ Docker Compose 安装包下载完成! ------------------------------'
}
## 删除 Docker Compose 安装包
removeDockerComposePackage () {
echo '------------------------------ 开始删除 Docker Compose 安装包... ------------------------------'
rm -rf $DOCKER_COMPOSE_PACKAGE_NAME
echo '------------------------------ Docker Compose 安装包删除完成! ------------------------------'
}
## 安装 Docker Engine
installDockerEngine () {
echo '------------------------------ 开始安装 Docker Engine... ------------------------------'
tar zxvf $PACKAGE_NAME -C $DOCKER_INSTALL_DIR --strip-components 1
tar zxvf $DOCKER_PACKAGE_NAME -C $DOCKER_INSTALL_DIR --strip-components 1
echo '------------------------------ Docker Engine 安装完成! ------------------------------'
}
## 安装 Dokcer Compose
installDockerCompose () {
echo '------------------------------ 开始安装 Docker Compose... ------------------------------'
cp -rpf ./$DOCKER_COMPOSE_PACKAGE_NAME $DOCKER_INSTALL_DIR/docker-compose
chmod +x $DOCKER_INSTALL_DIR/docker-compose
echo '------------------------------ Docker Compose 安装完成! ------------------------------'
}
## 配置环境变量
configEnv () {
echo '------------------------------ 开始配置环境变量... ------------------------------'
@ -137,6 +232,27 @@ configEnv () {
echo '------------------------------ 环境变量配置完成! ------------------------------'
}
## 移除环境变量
removeEnv () {
echo '------------------------------ 开始移除环境变量... ------------------------------'
cp -rpf ~/.bashrc ~/.bashrc.bak.$DATE
sed -i 's/# Docker Env Begin//g' ~/.bashrc
sed -i 's/export DOCKER_HOME='$DOCKER_INSTALL_DIR'//g' ~/.bashrc
sed -i 's/export PATH=$PATH:$DOCKER_HOME//g' ~/.bashrc
sed -i 's/# Docker Env End//g' ~/.bashrc
source ~/.bashrc
cp -rpf /etc/profile /etc/profile.bak.$DATE
sed -i 's/# Docker Env Begin//g' /etc/profile
sed -i 's/export DOCKER_HOME='$DOCKER_INSTALL_DIR'//g' /etc/profile
sed -i 's/export PATH=$PATH:$DOCKER_HOME//g' /etc/profile
sed -i 's/# Docker Env End//g' ~/.bashrc
source /etc/profile
echo '------------------------------ 环境变量移除完成! ------------------------------'
}
## 配置系统服务
configService () {
echo '------------------------------ 开始配置系统服务... ------------------------------'
@ -149,8 +265,19 @@ configService () {
echo '------------------------------ 系统服务配置完成! ------------------------------'
}
## 移除系统服务
removeService () {
echo '------------------------------ 开始移除系统服务... ------------------------------'
rm -rf /usr/lib/systemd/system/docker.service
rm -rf /usr/lib/systemd/system/docker.socket
systemctl daemon-reload
echo '------------------------------ 系统服务移除完成! ------------------------------'
}
## 配置 Docker
configDocker () {
configDockerEngine () {
echo '------------------------------ 开始配置 Docker... ------------------------------'
ed -i 's#/opt/docker/data#'$DOCKER_DATA_DIR'#g' daemon.json
@ -165,90 +292,227 @@ configDocker () {
}
## 启动 Docker
startD () {
startDocker () {
echo '------------------------------ 开始启动 Docker... ------------------------------'
systemctl start docker
systemctl enable docker
echo '------------------------------ Docker 启动完成! ------------------------------'
}
## 停止 Docker
stopD () {
stopDocker () {
echo '------------------------------ 开始停止 Docker... ------------------------------'
systemctl stop docker
systemctl disenable docker
echo '------------------------------ Docker 停止完成! ------------------------------'
}
## 重启 Docker
restartD () {
restartDocker () {
stop
start
}
## 查询 Dokcer 信息
info () {
echo '------------------------------ 开始查询 Docker 信息... ------------------------------'
## 设置 Docker 自启动
enableDocker () {
echo '------------------------------ 开始设置 Docker 自启动... ------------------------------'
systemctl enable docker
echo '------------------------------ Docker 自启动设置完成! ------------------------------'
}
## 取消 Docker 自启动
disableDocker () {
echo '------------------------------ 开始取消 Docker 自启动... ------------------------------'
systemctl disable docker
echo '------------------------------ Docker 自启动取消完成! ------------------------------'
}
## 查询 Dokcer 信息
infoDocker () {
echo '------------------------------ 开始查询 Docker 信息... ------------------------------'
docker info
echo '------------------------------ Docker 信息查询完成! ------------------------------'
}
## 安装 Docker Engine
onlyInstallDockerEngine () {
echo '------------------------------ 开始安装 Docker Engine... ------------------------------'
searchCPUArch
createDir
createUser
configSystem
if [ !NEED_OFFLINE_INSTALL ];then
downloadDockerEnginePackage
fi
installDockerEngine
configEnv
configService
configDockerEngine
startDocker
if [ $NEED_ENABLE_DOCKER ];then
enableDocker
fi
infoDocker
echo '------------------------------ Docker Engine 安装完成! ------------------------------'
}
## 安装 Docker Compose
onlyInstallDockerCompose () {
echo '------------------------------ 开始安装 Docker Compose... ------------------------------'
searchCPUArch
if [ $NEED_OFFLINE_INSTALL == "true" ]; then
downloadDockerComposePackage
fi
installDockerCompose
restartDocker
infoDocker
echo '------------------------------ Docker Conpose 安装完成! ------------------------------'
}
## 安装 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
echo '安装参数如下 '
echo 'CPU 架构 '$CPU_ARCH
echo 'Docker 安装目录 '$DOCKER_INSTALL_DIR
echo 'Docker 数据目录 '$DOCKER_DATA_DIR
echo '是否离线安装 '$NEED_OFFLINE_INSTALL
echo '是否安装 Docker Engine '$NEED_INSTALL_ENGINE
echo 'Docker Engine 版本 '$DOCKER_VERSION
echo 'Docker Engine 安装包下载地址(在线安装时使用): '$DOCKER_PACKAGE_URL
echo 'Docker Engine 安装包名称(离线安装时使用) '$DOCKER_PACKAGE_NAME
echo '是否安装 Docker Compose '$NEED_INSTALL_COMPOSE
echo 'Docker Compose 版本 '$DOCKER_COMPOSE_VERSION
echo 'Docker Compose 安装包下载地址(在线安装时使用) '$DOCKER_COMPOSE_PACKAGE_URL
echo 'Docker Compose 安装包名称(离线安装时使用) '$DOCKER_COMPOSE_PACKAGE_NAME
echo '是否开机自动启动: '$NEED_ENABLE_DOCKER
echo '请确认安装参数是否正确并根据提示进入安装Y安装N不安装E退出'
read NEED_DELETE
case $NEED_DELETE in
Y)
if [ $NEED_INSTALL_ENGINE == "true" ]; then
onlyInstallDockerEngine
fi
setCPUArch
createDir
createUser
configSystem
if [ !$NEED_OFFLINE_INSTALL ];then
downloadInstallPackage
fi
installDockerEngine
configEnv
configService
configDocker
startD
if [ $NEED_INSTALL_COMPOSE == "true" ]; then
onlyInstallDockerCompose
fi
;;
N)
echo '取消安装。'
;;
E)
echo '退出安装。'
exit 1
;;
*)
echo '参数错误。'
exit 1
;;
esac
echo '------------------------------ Docker 安装完成! ------------------------------'
echo '============================== Docker 安装完成!!! =============================='
echo `date +%Y-%m-%d` `date +%H:%M:%S`
echo '===================================================================================================='
}
## 卸载 Docker
uninstall () {
echo '===================================================================================================='
echo `date +%Y-%m-%d` `date +%H:%M:%S`
echo '============================== 开始卸载 Docker ...... =============================='
echo '此操作将会卸载 Docker 服务,并删除所有文件(包含 Docker 程序文件、镜像、容器文件等请确认是否卸载Y卸载N不卸载E退出'
read NEED_DELETE
case $NEED_DELETE in
Y)
disableDocker
stopDocker
removeService
removeEnv
removeSystemConfig
deleteUser
deleteDir
;;
N)
echo '取消卸载。'
;;
E)
echo '退出卸载。'
exit 1
;;
*)
echo '参数错误。'
exit 1
;;
esac
echo '============================== Docker 卸载完成!!! =============================='
echo `date +%Y-%m-%d` `date +%H:%M:%S`
echo '===================================================================================================='
}
# 初始化选项
while getopts "v:i:d:p:" opt; do
echo $@
while getopts "v:i:d:p:c:n:ab" opt; do
case $opt in
v)
## 设置 Docker Engine 版本
DOCKER_VERSION="$OPTARG"
echo $DOCKER_VERSION
echo '用户自定义 Docker Engine 版本: '$OPTARG
;;
i)
i)
## 设置 Docker 安装目录
DOCKER_INSTALL_DIR="$OPTARG"
echo $DOCKER_INSTALL_DIR
echo '用户自定义 Docker 安装目录: '$OPTARG
;;
d)
## 设置 Docker 数据目录
DOCKER_DATA_DIR="$OPTARG"
echo $DOCKER_DATA_DIR
echo '用户自定义 Docker 数据目录: '$OPTARG
;;
p)
## 设置 Docker 安装包名称
NEED_OFFLINE_INSTALL=true
PACKAGE_NAME="$OPTARG"
echo $PACKAGE_NAME
DOCKER_PACKAGE_NAME="$OPTARG"
echo '【离线安装】用户自定义 Docker Engine 安装包名称: '$OPTARG
;;
c)
## 设置 Docker Compose 版本
DOCKER_COMPOSE_VERSION="$OPTARG"
echo '用户自定义 Docker Compose 版本: '$OPTARG
;;
n)
## 设置 Docker Compose 安装包名称
NEED_OFFLINE_INSTALL=true
DOCKER_COMPOSE_PACKAGE_NAME="$OPTARG"
echo '【离线安装】用户自定义 Docker Compose 安装包名称: '$OPTARG
;;
a)
## 设置仅安装 Docker Engine
NEED_INSTALL_ENGINE=true
NEED_INSTALL_COMPOSE=false
echo '用户自定义: 仅安装 Docker Engine'
;;
b)
## 设置仅安装 Docker Compose
NEED_INSTALL_ENGINE=false
NEED_INSTALL_COMPOSE=true
echo '用户自定义: 仅安装 Docker Compose'
;;
esac
done
@ -267,17 +531,26 @@ case $@ in
install)
install
;;
uninstall)
uninstall
;;
info)
info
;;
startD)
startD
start)
startDocker
;;
stopD)
stopD
stop)
stopDocker
;;
restart)
restartD
restartDocker
;;
enable)
enableDocker
;;
disable)
disableDocker
;;
*)
help

@ -0,0 +1,35 @@
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
Requires=docker.socket
[Service]
Type=notify
Environment=PATH=/data/docker/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/data/docker/bin/dockerd -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

@ -0,0 +1,12 @@
[Unit]
Description=Docker Socket for the API
PartOf=docker.service
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target