Docker 脚本新增指定 Docker CE 软件源仓库版本命令选项

This commit is contained in:
Super Manito
2025-09-26 20:34:11 +08:00
parent ba9cfe9158
commit 4c7860d48c
4 changed files with 78 additions and 51 deletions

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
## Author: SuperManito ## Author: SuperManito
## Modified: 2025-09-13 ## Modified: 2025-09-26
## License: MIT ## License: MIT
## GitHub: https://github.com/SuperManito/LinuxMirrors ## GitHub: https://github.com/SuperManito/LinuxMirrors
## Website: https://linuxmirrors.cn ## Website: https://linuxmirrors.cn
@@ -203,8 +203,9 @@ function handle_command_options() {
--source 指定 Docker CE 软件源地址(域名或IP) 地址 --source 指定 Docker CE 软件源地址(域名或IP) 地址
--source-registry 指定 Docker 镜像仓库地址(域名或IP) 地址 --source-registry 指定 Docker 镜像仓库地址(域名或IP) 地址
--branch 指定 Docker CE 软件源仓库(路径) 仓库名 --branch 指定 Docker CE 软件源仓库(路径) 仓库名
--branch-version 指定 Docker CE 软件源仓库版本 版本号
--designated-version 指定 Docker Engine 安装版本 版本号
--codename 指定 Debian 系操作系统的版本代号 代号名称 --codename 指定 Debian 系操作系统的版本代号 代号名称
--designated-version 指定 Docker CE 安装版本 版本号
--protocol 指定 Docker CE 软件源的 WEB 协议 http 或 https --protocol 指定 Docker CE 软件源的 WEB 协议 http 或 https
--use-intranet-source 是否优先使用内网 Docker CE 软件源地址 true 或 false --use-intranet-source 是否优先使用内网 Docker CE 软件源地址 true 或 false
--install-latest 是否安装最新版本的 Docker Engine true 或 false --install-latest 是否安装最新版本的 Docker Engine true 或 false
@@ -258,13 +259,18 @@ function handle_command_options() {
command_error "$1" "软件源仓库" command_error "$1" "软件源仓库"
fi fi
;; ;;
## 指定 Debian 版本代号 ## 指定 Docker CE 软件源仓库版本
--codename) --branch-version)
if [ "$2" ]; then if [ "$2" ]; then
DEBIAN_CODENAME="$2" echo "$2" | grep -Eq "^[0-9]{1,2}$"
if [ $? -eq 0 ]; then
SOURCE_BRANCH_VERSION="$2"
shift shift
else else
command_error "$1" "版本号" command_error "$2" "有效的版本号"
fi
else
command_error "$1" "Docker CE 软件源仓库的版本号"
fi fi
;; ;;
## 指定 Docker Engine 安装版本 ## 指定 Docker Engine 安装版本
@@ -281,6 +287,15 @@ function handle_command_options() {
command_error "$1" "版本号" command_error "$1" "版本号"
fi fi
;; ;;
## 指定 Debian 版本代号
--codename)
if [ "$2" ]; then
DEBIAN_CODENAME="$2"
shift
else
command_error "$1" "版本代号"
fi
;;
## WEB 协议HTTP/HTTPS ## WEB 协议HTTP/HTTPS
--protocol) --protocol)
if [ "$2" ]; then 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" \ -e "s|http[s]\?://.*/linux/${SOURCE_BRANCH}/|${WEB_PROTOCOL}://${SOURCE}/linux/${SOURCE_BRANCH}/|g" \
-i \ -i \
$File_DockerRepo $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 local target_version
case "${SYSTEM_VERSION_ID_MAJOR}" in case "${SYSTEM_VERSION_ID_MAJOR}" in
7 | 8 | 9 | 10) 7 | 8 | 9 | 10)
@@ -1070,7 +1092,9 @@ function configure_docker_ce_mirror() {
fi fi
;; ;;
esac esac
sed -i "s|\$releasever|${target_version}|g" $File_DockerRepo sed -e "s|\$releasever|${target_version}|g" \
-i \
$File_DockerRepo
commands+=("${package_manager} makecache") commands+=("${package_manager} makecache")
fi fi
;; ;;
@@ -1230,6 +1254,7 @@ function install_docker_engine() {
commands+=("$(get_package_manager) install -y ${pkgs}") commands+=("$(get_package_manager) install -y ${pkgs}")
;; ;;
esac esac
echo ''
if [[ "${PURE_MODE}" == "true" ]]; then if [[ "${PURE_MODE}" == "true" ]]; then
local exec_cmd="" local exec_cmd=""
for cmd in "${commands[@]}"; do for cmd in "${commands[@]}"; do
@@ -1239,7 +1264,6 @@ function install_docker_engine() {
exec_cmd="${exec_cmd} ; ${cmd}" exec_cmd="${exec_cmd} ; ${cmd}"
fi fi
done done
echo ''
animate_exec "${exec_cmd}" "安装 Docker Engine" animate_exec "${exec_cmd}" "安装 Docker Engine"
else else
for cmd in "${commands[@]}"; do for cmd in "${commands[@]}"; do
@@ -1277,7 +1301,6 @@ function install_docker_engine() {
;; ;;
esac esac
fi fi
echo ''
fi fi
## 判定是否已安装 ## 判定是否已安装

View File

@@ -203,11 +203,12 @@ hide:
| :-: | :-: | :-: | | :-: | :-: | :-: |
| `--source` | Specify `Docker CE` source address (domain or IP) | `address` | | `--source` | Specify `Docker CE` source address (domain or IP) | `address` |
| `--source-registry` | Specify `Docker` registry mirror 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` | | `--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` | | `--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` | | `--install-latest` | Whether to install the latest `Docker Engine` | `true` or `false` |
| `--close-firewall` | Whether to disable the firewall | `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` | | `--clean-screen` | Whether to clear the screen before running | `true` or `false` |
@@ -283,9 +284,9 @@ hide:
``` { .bash .no-copy } ``` { .bash .no-copy }
bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --source mirror.example.com/docker-ce 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. 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` > 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. > 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`. When specifying a version, the "install latest" option is ignored. Format: `major.minor.patch`, e.g., `27.4.1`.

View File

@@ -202,8 +202,9 @@ hide:
--source 指定 Docker CE 软件源地址(域名或IP) 地址 --source 指定 Docker CE 软件源地址(域名或IP) 地址
--source-registry 指定 Docker 镜像仓库地址(域名或IP) 地址 --source-registry 指定 Docker 镜像仓库地址(域名或IP) 地址
--branch 指定 Docker CE 软件源仓库(路径) 仓库名 --branch 指定 Docker CE 软件源仓库(路径) 仓库名
--branch-version 指定 Docker CE 软件源仓库版本 版本号
--designated-version 指定 Docker Engine 安装版本 版本号
--codename 指定 Debian 系操作系统的版本代号 代号名称 --codename 指定 Debian 系操作系统的版本代号 代号名称
--designated-version 指定 Docker CE 安装版本 版本号
--protocol 指定 Docker CE 软件源的 WEB 协议 http 或 https --protocol 指定 Docker CE 软件源的 WEB 协议 http 或 https
--use-intranet-source 是否优先使用内网 Docker CE 软件源地址 true 或 false --use-intranet-source 是否优先使用内网 Docker CE 软件源地址 true 或 false
--install-latest 是否安装最新版本的 Docker Engine true 或 false --install-latest 是否安装最新版本的 Docker Engine true 或 false
@@ -218,9 +219,10 @@ hide:
| :-: | :-: | :-: | | :-: | :-: | :-: |
| `--source` | 指定 `Docker CE` 源地址(域名或IP) | `地址` | | `--source` | 指定 `Docker CE` 源地址(域名或IP) | `地址` |
| `--source-registry` | 指定 `Docker` 镜像仓库地址(域名或IP) | `地址` | | `--source-registry` | 指定 `Docker` 镜像仓库地址(域名或IP) | `地址` |
| `--branch` | 指定 `Docker CE` 软件源仓库 | `仓库名(详见下方文档)` | | `--branch` | 指定 `Docker CE` 软件源仓库(路径) | `仓库名(详见下方文档)` |
| `--branch-version` | 指定 `Docker CE` 软件源仓库版本 | `版本号(详见下方文档)` |
| `--designated-version` | 指定 `Docker Engine` 安装版本 | `版本号(详见下方文档)` |
| `--codename` | 指定 `Debian` 系操作系统的版本代号 | `代号名称` | | `--codename` | 指定 `Debian` 系操作系统的版本代号 | `代号名称` |
| `--designated-version` | 指定 `Docker CE` 安装版本 | `版本号(详见下方文档)` |
| `--protocol` | 指定 `Docker CE` 源的 WEB 协议 | `http` 或 `https` | | `--protocol` | 指定 `Docker CE` 源的 WEB 协议 | `http` 或 `https` |
| `--use-intranet-source` | 是否优先使用内网 `Docker CE` 软件源地址 | `true` 或 `false` | | `--use-intranet-source` | 是否优先使用内网 `Docker CE` 软件源地址 | `true` 或 `false` |
| `--install-latest` | 是否安装最新版本的 `Docker Engine` | `true` 或 `false` | | `--install-latest` | 是否安装最新版本的 `Docker Engine` | `true` 或 `false` |
@@ -310,7 +312,7 @@ hide:
> 仓库名是固定的,目前只有 `centos` `debian` `fedora` `raspbian` `rhel` `sles` `static` `ubuntu` 这几个 > 仓库名是固定的,目前只有 `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`。 指定安装版本时会忽略 `是否安装最新版本` 的命令选项,格式为 `主版本.次版本.补丁版本`,例如 `27.4.1`。

View File

@@ -57,7 +57,7 @@ hide:
整合安裝 [`Docker Engine`](https://docs.docker.com/engine) 和 [`Docker Compose`](https://docs.docker.com/compose)支援選擇或更換軟體源Docker 軟體倉庫)以及鏡像倉庫、安裝指定版本、重裝等功能,支援 ARM 架構 整合安裝 [`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` | 指定 `Docker CE` 軟體源位址(網域名稱或IP) | `位址` |
| `--source-registry` | 指定 `Docker` 鏡像倉庫位址(網域名稱或IP) | `位址` | | `--source-registry` | 指定 `Docker` 鏡像倉庫位址(網域名稱或IP) | `位址` |
| `--branch` | 指定 `Docker CE` 源倉庫 | `倉庫名稱(詳見下方文檔)` | | `--branch` | 指定 `Docker CE` 軟體源倉庫(路徑) | `倉庫名稱(詳見下方文檔)` |
| `--branch-version` | 指定 `Docker CE` 軟體源倉庫版本 | `版本號(詳見下方文檔)` |
| `--designated-version` | 指定 `Docker Engine` 安裝版本 | `版本號(詳見下方文檔)` |
| `--codename` | 指定 `Debian` 係作業系統的版本代號 | `代號名稱` | | `--codename` | 指定 `Debian` 係作業系統的版本代號 | `代號名稱` |
| `--designated-version` | 指定 `Docker CE` 安裝版本 | `版本號(詳見下方文檔)` |
| `--protocol` | 指定 `Docker CE` 源的 WEB 協議 | `http` 或 `https` | | `--protocol` | 指定 `Docker CE` 源的 WEB 協議 | `http` 或 `https` |
| `--use-intranet-source` | 是否優先使用內部網路 `Docker CE` 軟體源位址 | `true` 或 `false` | | `--use-intranet-source` | 是否優先使用內部網路 `Docker CE` 軟體源位址 | `true` 或 `false` |
| `--install-latest` | 是否安裝最新版本的 `Docker Engine` | `true` 或 `false` | | `--install-latest` | 是否安裝最新版本的 `Docker Engine` | `true` 或 `false` |
@@ -293,9 +294,9 @@ hide:
bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --branch centos bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --branch centos
``` ```
> 倉庫名稱是固定的,目前只有 `centos` `debian` `fedora` `raspbian` `rhel` `sles` `static` `ubuntu` 這幾個 > 倉庫名稱是固定的,目前只有 `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`。 指定安裝版本時會忽略 `是否安裝最新版本` 的命令選項,格式為 `主版.次版本.補丁版本`,例如 `27.4.1`。