diff --git a/docker-tools/docker-tools b/docker-tools/docker-tools index 8f81daa..1ece29e 100755 --- a/docker-tools/docker-tools +++ b/docker-tools/docker-tools @@ -4,7 +4,7 @@ # 参数配置 ## 版本号 -VERSION=1.0.0 +VERSION=1.1.0 ## 当前的日期、日期时间 DATE=`date +%Y%m%d` DATETIME=`date +%Y%m%d`_`date +%H%M%S` @@ -19,11 +19,11 @@ NEED_OFFLINE_INSTALL=false ## 是否安装 Docker Engine NEED_INSTALL_ENGINE=true ## Docker 版本号 -DOCKER_VERSION=28.0.1 +DOCKER_VERSION=28.0.2 ## Docker 安装包下载地址(在线安装时使用) DOCKER_PACKAGE_URL=https://download.docker.com/linux/static/stable ## Docker 安装包名称(离线安装时使用) -DOCKER_PACKAGE_NAME=docker-28.0.1.tgz +DOCKER_PACKAGE_NAME=docker-28.0.2.tgz ## 是否安装 Docker Compose NEED_INSTALL_COMPOSE=true ## Docker Compose 版本号 @@ -159,7 +159,7 @@ downloadDockerEnginePackage () { echo '------------------------------ 开始下载 Docker 安装包... ------------------------------' wget $DOCKER_PACKAGE_URL/$CPU_ARCH/docker-$DOCKER_VERSION.tgz - $DOCKER_PACKAGE_NAME=docker-$DOCKER_VERSION.tgz + DOCKER_PACKAGE_NAME=docker-$DOCKER_VERSION.tgz echo '------------------------------ Docker 安装包下载完成! ------------------------------' } @@ -178,7 +178,7 @@ 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 + DOCKER_COMPOSE_PACKAGE_NAME=docker-compose-linux-$CPU_ARCH echo '------------------------------ Docker Compose 安装包下载完成! ------------------------------' } @@ -201,28 +201,48 @@ installDockerEngine () { echo '------------------------------ Docker Engine 安装完成! ------------------------------' } +## 备份当前 Docker Engine () { +backupDockerEngine () { + echo '------------------------------ 开始备份 Docker Engine... ------------------------------' + + cp -rpf $DOCKER_INSTALL_DIR $DOCKER_INSTALL_DIR'_bak_'$DATETIME + + echo '------------------------------ Docker Engine 备份完成! ------------------------------' +} + ## 安装 Dokcer Compose installDockerCompose () { echo '------------------------------ 开始安装 Docker Compose... ------------------------------' cp -rpf ./$DOCKER_COMPOSE_PACKAGE_NAME $DOCKER_INSTALL_DIR/docker-compose + chown docker.docker $DOCKER_INSTALL_DIR/docker-compose chmod +x $DOCKER_INSTALL_DIR/docker-compose echo '------------------------------ Docker Compose 安装完成! ------------------------------' } +## 备份当前 Docker Coimpose +backupDockerCompose () { + echo '------------------------------ 开始备份 Docker Compose... ------------------------------' + + mkdir -pv $DOCKER_INSTALL_DIR'_bak_'$DATETIME + cp -rpf $DOCKER_INSTALL_DIR/docker-compose $DOCKER_INSTALL_DIR'_bak_'$DATETIME/docker-compose + + echo '------------------------------ Docker Compose 备份完成! ------------------------------' +} + ## 配置环境变量 configEnv () { echo '------------------------------ 开始配置环境变量... ------------------------------' - cp -rpf ~/.bashrc ~/.bashrc.bak.$DATE + cp -rpf ~/.bashrc ~/.bashrc.bak.$DATETIME 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 + cp -rpf /etc/profile /etc/profile.bak.$DATETIME echo '# Docker Env Begin' >> /etc/profile echo 'export DOCKER_HOME='$DOCKER_INSTALL_DIR >> /etc/profile echo 'export PATH=$PATH:$DOCKER_HOME' >> /etc/profile @@ -236,14 +256,14 @@ configEnv () { removeEnv () { echo '------------------------------ 开始移除环境变量... ------------------------------' - cp -rpf ~/.bashrc ~/.bashrc.bak.$DATE + cp -rpf ~/.bashrc ~/.bashrc.bak.$DATETIME 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 + cp -rpf /etc/profile /etc/profile.bak.$DATETIME 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 @@ -283,9 +303,9 @@ configDockerEngine () { cp -rpf daemon.json /etc/docker/daemon.json sed -i 's#{{DOCKER_DATA_DIR}}#'$DOCKER_DATA_DIR'#g' /etc/docker/daemon.json - chmod -R docker.docker $DOCKER_INSTALL_DIR + chown -R docker.docker $DOCKER_INSTALL_DIR chmod -R 755 $DOCKER_INSTALL_DIR - chmod -R docker.docker $DOCKER_DATA_DIR + chown -R docker.docker $DOCKER_DATA_DIR hmod -R 755 $DOCKER_DATA_DIR echo '------------------------------ Docker 配置完成! ------------------------------' @@ -379,6 +399,43 @@ onlyInstallDockerCompose () { echo '------------------------------ Docker Conpose 安装完成! ------------------------------' } +## 更新 Dokcer Engine +onlyUpdateDockerEngine () { + echo '------------------------------ 开始更新 Docker Engine... ------------------------------' + + searchCPUArch + if [ $NEED_OFFLINE_INSTALL == "false" ];then + downloadDockerEnginePackage + fi + disableDocker + stopDocker + backupDockerEngine + installDockerEngine + startDocker + if [ $NEED_ENABLE_DOCKER == "true" ];then + enableDocker + fi + infoDocker + + echo '------------------------------ Docker Engine 更新完成! ------------------------------' +} + +## 更新 Dokcer Compose +onlyUpdateDockerCompose () { + echo '------------------------------ 开始更新 Docker Compose... ------------------------------' + + searchCPUArch + if [ $NEED_OFFLINE_INSTALL == "false" ]; then + downloadDockerComposePackage + fi + backupDockerCompose + installDockerCompose + restartDocker + infoDocker + + echo '------------------------------ Docker Conpose 更新完成! ------------------------------' +} + ## 安装 Docker install () { echo '====================================================================================================' @@ -435,6 +492,9 @@ uninstall () { echo `date +%Y-%m-%d` `date +%H:%M:%S` echo '============================== 开始卸载 Docker ...... ==============================' + echo '删除目录如下 :' + echo 'Docker 安装目录 : '$DOCKER_INSTALL_DIR + echo 'Docker 数据目录 : '$DOCKER_DATA_DIR echo '此操作将会卸载 Docker 服务,并删除所有文件(包含 Docker 程序文件、镜像、容器文件等),请确认是否卸载(Y:卸载,N:不卸载,E:退出):' read NEED_DELETE case $NEED_DELETE in @@ -465,6 +525,55 @@ uninstall () { echo '====================================================================================================' } +## 更新 Docker +update () { + echo '====================================================================================================' + echo `date +%Y-%m-%d` `date +%H:%M:%S` + echo '============================== 开始更新 Docker ...... ==============================' + + 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 '此操作将会更新当前 Docker 版本,存在一定风险,请确认是否更新(Y:更新,N:不更新,E:退出):' + read NEED_UPDATE + case $NEED_UPDATE in + Y) + if [ $NEED_INSTALL_ENGINE == "true" ]; then + onlyUpdateDockerEngine + fi + if [ $NEED_INSTALL_COMPOSE == 'true' ]; then + onlyUpdateDockerCompose + fi + ;; + N) + echo '取消更新。' + ;; + E) + echo '退出更新。' + exit 1 + ;; + *) + echo '参数错误。' + exit 1 + ;; + esac + + echo '============================== Docker 更新完成!!! ==============================' + echo `date +%Y-%m-%d` `date +%H:%M:%S` + echo '====================================================================================================' +} + # 初始化选项 echo $@ @@ -534,6 +643,9 @@ case $@ in uninstall) uninstall ;; + update) + update + ;; info) info ;; diff --git a/releases/docker-tools_v1.1.0.zip b/releases/docker-tools_v1.1.0.zip new file mode 100644 index 0000000..c6ff6e1 Binary files /dev/null and b/releases/docker-tools_v1.1.0.zip differ