From 4c7860d48cfefded15c32f1baa0f544fde18e8ce Mon Sep 17 00:00:00 2001 From: Super Manito <68613938+SuperManito@users.noreply.github.com> Date: Fri, 26 Sep 2025 20:34:11 +0800 Subject: [PATCH] =?UTF-8?q?Docker=20=E8=84=9A=E6=9C=AC=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=20Docker=20CE=20=E8=BD=AF=E4=BB=B6=E6=BA=90?= =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=89=88=E6=9C=AC=E5=91=BD=E4=BB=A4=E9=80=89?= =?UTF-8?q?=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DockerInstallation.sh | 71 ++++++++++++++++++++++++------------- docs/other/index.en.md | 13 +++---- docs/other/index.md | 34 +++++++++--------- docs/other/index.zh-Hant.md | 11 +++--- 4 files changed, 78 insertions(+), 51 deletions(-) diff --git a/DockerInstallation.sh b/DockerInstallation.sh index 5dc59f9..b38d1cd 100755 --- a/DockerInstallation.sh +++ b/DockerInstallation.sh @@ -1,6 +1,6 @@ #!/bin/bash ## Author: SuperManito -## Modified: 2025-09-13 +## Modified: 2025-09-26 ## License: MIT ## GitHub: https://github.com/SuperManito/LinuxMirrors ## Website: https://linuxmirrors.cn @@ -200,19 +200,20 @@ function handle_command_options() { echo -e " 命令选项(名称/含义/值): - --source 指定 Docker CE 软件源地址(域名或IP) 地址 - --source-registry 指定 Docker 镜像仓库地址(域名或IP) 地址 - --branch 指定 Docker CE 软件源仓库(路径) 仓库名 - --codename 指定 Debian 系操作系统的版本代号 代号名称 - --designated-version 指定 Docker CE 安装版本 版本号 - --protocol 指定 Docker CE 软件源的 WEB 协议 http 或 https - --use-intranet-source 是否优先使用内网 Docker CE 软件源地址 true 或 false - --install-latest 是否安装最新版本的 Docker Engine true 或 false - --close-firewall 是否关闭防火墙 true 或 false - --clean-screen 是否在运行前清除屏幕上的所有内容 true 或 false - --only-registry 仅更换镜像仓库模式 无 - --ignore-backup-tips 忽略覆盖备份提示 无 - --pure-mode 纯净模式,精简打印内容 无 + --source 指定 Docker CE 软件源地址(域名或IP) 地址 + --source-registry 指定 Docker 镜像仓库地址(域名或IP) 地址 + --branch 指定 Docker CE 软件源仓库(路径) 仓库名 + --branch-version 指定 Docker CE 软件源仓库版本 版本号 + --designated-version 指定 Docker Engine 安装版本 版本号 + --codename 指定 Debian 系操作系统的版本代号 代号名称 + --protocol 指定 Docker CE 软件源的 WEB 协议 http 或 https + --use-intranet-source 是否优先使用内网 Docker CE 软件源地址 true 或 false + --install-latest 是否安装最新版本的 Docker Engine true 或 false + --close-firewall 是否关闭防火墙 true 或 false + --clean-screen 是否在运行前清除屏幕上的所有内容 true 或 false + --only-registry 仅更换镜像仓库模式 无 + --ignore-backup-tips 忽略覆盖备份提示 无 + --pure-mode 纯净模式,精简打印内容 无 问题报告 https://github.com/SuperManito/LinuxMirrors/issues " @@ -258,13 +259,18 @@ function handle_command_options() { command_error "$1" "软件源仓库" fi ;; - ## 指定 Debian 版本代号 - --codename) + ## 指定 Docker CE 软件源仓库版本 + --branch-version) if [ "$2" ]; then - DEBIAN_CODENAME="$2" - shift + echo "$2" | grep -Eq "^[0-9]{1,2}$" + if [ $? -eq 0 ]; then + SOURCE_BRANCH_VERSION="$2" + shift + else + command_error "$2" "有效的版本号" + fi else - command_error "$1" "版本代号" + command_error "$1" "Docker CE 软件源仓库的版本号" fi ;; ## 指定 Docker Engine 安装版本 @@ -281,6 +287,15 @@ function handle_command_options() { command_error "$1" "版本号" fi ;; + ## 指定 Debian 版本代号 + --codename) + if [ "$2" ]; then + DEBIAN_CODENAME="$2" + shift + else + command_error "$1" "版本代号" + fi + ;; ## WEB 协议(HTTP/HTTPS) --protocol) if [ "$2" ]; then @@ -1009,8 +1024,15 @@ function configure_docker_ce_mirror() { -e "s|http[s]\?://.*/linux/${SOURCE_BRANCH}/|${WEB_PROTOCOL}://${SOURCE}/linux/${SOURCE_BRANCH}/|g" \ -i \ $File_DockerRepo - ## 兼容处理版本号 - if [[ "${SYSTEM_JUDGMENT}" != "${SYSTEM_FEDORA}" ]]; then + ## 处理版本号 + if [[ "${SOURCE_BRANCH_VERSION}" ]]; then + # 指定版本 + sed -e "s|\$releasever|${SOURCE_BRANCH_VERSION}|g" \ + -i \ + $File_DockerRepo + commands+=("${package_manager} makecache") + elif [[ "${SYSTEM_JUDGMENT}" != "${SYSTEM_FEDORA}" ]]; then + # 兼容处理 local target_version case "${SYSTEM_VERSION_ID_MAJOR}" in 7 | 8 | 9 | 10) @@ -1070,7 +1092,9 @@ function configure_docker_ce_mirror() { fi ;; esac - sed -i "s|\$releasever|${target_version}|g" $File_DockerRepo + sed -e "s|\$releasever|${target_version}|g" \ + -i \ + $File_DockerRepo commands+=("${package_manager} makecache") fi ;; @@ -1230,6 +1254,7 @@ function install_docker_engine() { commands+=("$(get_package_manager) install -y ${pkgs}") ;; esac + echo '' if [[ "${PURE_MODE}" == "true" ]]; then local exec_cmd="" for cmd in "${commands[@]}"; do @@ -1239,7 +1264,6 @@ function install_docker_engine() { exec_cmd="${exec_cmd} ; ${cmd}" fi done - echo '' animate_exec "${exec_cmd}" "安装 Docker Engine" else for cmd in "${commands[@]}"; do @@ -1277,7 +1301,6 @@ function install_docker_engine() { ;; esac fi - echo '' fi ## 判定是否已安装 diff --git a/docs/other/index.en.md b/docs/other/index.en.md index 48a4ecd..13f5f6f 100644 --- a/docs/other/index.en.md +++ b/docs/other/index.en.md @@ -203,11 +203,12 @@ hide: | :-: | :-: | :-: | | `--source` | Specify `Docker CE` source address (domain or IP) | `address` | | `--source-registry` | Specify `Docker` registry mirror address (domain or IP) | `address` | - | `--branch` | Specify `Docker CE` repository | `repo name (see docs below)` | + | `--branch` | Specify `Docker CE` source repository (path) | `repo name (see docs below)` | + | `--branch-version` | Specify `Docker CE` source repository version | `version (see docs below)` | + | `--designated-version` | Specify `Docker Engine` installation version | `version (see docs below)` | | `--codename` | Specify `Debian-based` OS codename | `codename` | - | `--designated-version` | Specify `Docker CE` installation version | `version (see docs below)` | | `--protocol` | Specify WEB protocol for `Docker CE` source | `http` or `https` | - | `--use-intranet-source` | Prefer intranet `Docker CE` mirror address | `true` or `false` | + | `--use-intranet-source` | Prefer intranet `Docker CE` source address | `true` or `false` | | `--install-latest` | Whether to install the latest `Docker Engine` | `true` or `false` | | `--close-firewall` | Whether to disable the firewall | `true` or `false` | | `--clean-screen` | Whether to clear the screen before running | `true` or `false` | @@ -283,9 +284,9 @@ hide: ``` { .bash .no-copy } bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --source mirror.example.com/docker-ce ``` - > Note: The address path must include the Docker CE repository path, i.e., `docker-ce`. + > Note: The address path must include the Docker CE source repository path, i.e., `docker-ce`. - - #### Specify Docker CE Repository + - #### Specify Docker CE Source Repository The script will automatically detect this in most cases. Specify only if you have special requirements. @@ -295,7 +296,7 @@ hide: > Repository names are fixed: `centos`, `debian`, `fedora`, `raspbian`, `rhel`, `sles`, `static`, `ubuntu` > See [official installation docs](https://docs.docker.com/engine/install) and [Docker CE official repo](https://download.docker.com/linux) for details. - - #### Specify Docker CE Installation Version + - #### Specify Docker Engine Installation Version When specifying a version, the "install latest" option is ignored. Format: `major.minor.patch`, e.g., `27.4.1`. diff --git a/docs/other/index.md b/docs/other/index.md index 5f55c86..ba7cfb3 100644 --- a/docs/other/index.md +++ b/docs/other/index.md @@ -199,28 +199,30 @@ hide: 命令选项(名称/含义/值): - --source 指定 Docker CE 软件源地址(域名或IP) 地址 - --source-registry 指定 Docker 镜像仓库地址(域名或IP) 地址 - --branch 指定 Docker CE 软件源仓库(路径) 仓库名 - --codename 指定 Debian 系操作系统的版本代号 代号名称 - --designated-version 指定 Docker CE 安装版本 版本号 - --protocol 指定 Docker CE 软件源的 WEB 协议 http 或 https - --use-intranet-source 是否优先使用内网 Docker CE 软件源地址 true 或 false - --install-latest 是否安装最新版本的 Docker Engine true 或 false - --close-firewall 是否关闭防火墙 true 或 false - --clean-screen 是否在运行前清除屏幕上的所有内容 true 或 false - --only-registry 仅更换镜像仓库模式 无 - --ignore-backup-tips 忽略覆盖备份提示 无 - --pure-mode 纯净模式,精简打印内容 无 + --source 指定 Docker CE 软件源地址(域名或IP) 地址 + --source-registry 指定 Docker 镜像仓库地址(域名或IP) 地址 + --branch 指定 Docker CE 软件源仓库(路径) 仓库名 + --branch-version 指定 Docker CE 软件源仓库版本 版本号 + --designated-version 指定 Docker Engine 安装版本 版本号 + --codename 指定 Debian 系操作系统的版本代号 代号名称 + --protocol 指定 Docker CE 软件源的 WEB 协议 http 或 https + --use-intranet-source 是否优先使用内网 Docker CE 软件源地址 true 或 false + --install-latest 是否安装最新版本的 Docker Engine true 或 false + --close-firewall 是否关闭防火墙 true 或 false + --clean-screen 是否在运行前清除屏幕上的所有内容 true 或 false + --only-registry 仅更换镜像仓库模式 无 + --ignore-backup-tips 忽略覆盖备份提示 无 + --pure-mode 纯净模式,精简打印内容 无 ``` | 名称 | 含义 | 选项值 | | :-: | :-: | :-: | | `--source` | 指定 `Docker CE` 源地址(域名或IP) | `地址` | | `--source-registry` | 指定 `Docker` 镜像仓库地址(域名或IP) | `地址` | - | `--branch` | 指定 `Docker CE` 软件源仓库 | `仓库名(详见下方文档)` | + | `--branch` | 指定 `Docker CE` 软件源仓库(路径) | `仓库名(详见下方文档)` | + | `--branch-version` | 指定 `Docker CE` 软件源仓库版本 | `版本号(详见下方文档)` | + | `--designated-version` | 指定 `Docker Engine` 安装版本 | `版本号(详见下方文档)` | | `--codename` | 指定 `Debian` 系操作系统的版本代号 | `代号名称` | - | `--designated-version` | 指定 `Docker CE` 安装版本 | `版本号(详见下方文档)` | | `--protocol` | 指定 `Docker CE` 源的 WEB 协议 | `http` 或 `https` | | `--use-intranet-source` | 是否优先使用内网 `Docker CE` 软件源地址 | `true` 或 `false` | | `--install-latest` | 是否安装最新版本的 `Docker Engine` | `true` 或 `false` | @@ -310,7 +312,7 @@ hide: > 仓库名是固定的,目前只有 `centos` `debian` `fedora` `raspbian` `rhel` `sles` `static` `ubuntu` 这几个 > 具体详见 [官方安装文档](https://docs.docker.com/engine/install) 和 [Docker CE 官方仓库](https://download.docker.com/linux) - - #### 指定 Docker CE 安装版本 + - #### 指定 Docker Engine 安装版本 指定安装版本时会忽略 `是否安装最新版本` 的命令选项,格式为 `主版本.次版本.补丁版本`,例如 `27.4.1`。 diff --git a/docs/other/index.zh-Hant.md b/docs/other/index.zh-Hant.md index 4026e3d..f64b85e 100644 --- a/docs/other/index.zh-Hant.md +++ b/docs/other/index.zh-Hant.md @@ -57,7 +57,7 @@ hide: 整合安裝 [`Docker Engine`](https://docs.docker.com/engine) 和 [`Docker Compose`](https://docs.docker.com/compose),支援選擇或更換軟體源(Docker 軟體倉庫)以及鏡像倉庫、安裝指定版本、重裝等功能,支援 ARM 架構 - 腳本參考[官方文件](https://docs.docker.com/engine/install)使用系統套件管理工具進行安裝,不存在相容性、安全性等問題,可安裝的版本由 Docker CE 倉庫決定 + 腳本參考[官方文檔](https://docs.docker.com/engine/install)使用系統套件管理工具進行安裝,不存在相容性、安全性等問題,可安裝的版本由 Docker CE 倉庫決定 === "僅更換鏡像加速器" @@ -203,9 +203,10 @@ hide: | :-: | :-: | :-: | | `--source` | 指定 `Docker CE` 軟體源位址(網域名稱或IP) | `位址` | | `--source-registry` | 指定 `Docker` 鏡像倉庫位址(網域名稱或IP) | `位址` | - | `--branch` | 指定 `Docker CE` 源倉庫 | `倉庫名稱(詳見下方文檔)` | + | `--branch` | 指定 `Docker CE` 軟體源倉庫(路徑) | `倉庫名稱(詳見下方文檔)` | + | `--branch-version` | 指定 `Docker CE` 軟體源倉庫版本 | `版本號(詳見下方文檔)` | + | `--designated-version` | 指定 `Docker Engine` 安裝版本 | `版本號(詳見下方文檔)` | | `--codename` | 指定 `Debian` 係作業系統的版本代號 | `代號名稱` | - | `--designated-version` | 指定 `Docker CE` 安裝版本 | `版本號(詳見下方文檔)` | | `--protocol` | 指定 `Docker CE` 源的 WEB 協議 | `http` 或 `https` | | `--use-intranet-source` | 是否優先使用內部網路 `Docker CE` 軟體源位址 | `true` 或 `false` | | `--install-latest` | 是否安裝最新版本的 `Docker Engine` | `true` 或 `false` | @@ -293,9 +294,9 @@ hide: bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --branch centos ``` > 倉庫名稱是固定的,目前只有 `centos` `debian` `fedora` `raspbian` `rhel` `sles` `static` `ubuntu` 這幾個 - > 詳情請見 [官方安裝文件](https://docs.docker.com/engine/install) 及 [Docker CE 官方倉庫](https://download.docker.com/linux) + > 詳情請見 [官方安裝文檔](https://docs.docker.com/engine/install) 及 [Docker CE 官方倉庫](https://download.docker.com/linux) - - #### 指定 Docker CE 安裝版本 + - #### 指定 Docker Engine 安裝版本 指定安裝版本時會忽略 `是否安裝最新版本` 的命令選項,格式為 `主版.次版本.補丁版本`,例如 `27.4.1`。