mirror of
				https://gitee.com/SuperManito/LinuxMirrors
				synced 2025-11-04 16:30:26 +08:00 
			
		
		
		
	Docker 脚本新增指定 Docker CE 软件源仓库版本命令选项
This commit is contained in:
		@@ -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
 | 
			
		||||
 | 
			
		||||
    ## 判定是否已安装
 | 
			
		||||
 
 | 
			
		||||
@@ -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`.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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`。
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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`。
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user