diff --git a/DockerInstallation.sh b/DockerInstallation.sh index ba63c25..9c27b27 100755 --- a/DockerInstallation.sh +++ b/DockerInstallation.sh @@ -1,6 +1,6 @@ #!/bin/bash ## Author: SuperManito -## Modified: 2025-10-22 +## Modified: 2025-10-23 ## License: MIT ## GitHub: https://github.com/SuperManito/LinuxMirrors ## Website: https://linuxmirrors.cn @@ -423,7 +423,11 @@ function handle_command_options() { function run_start() { if [ -z "${CLEAN_SCREEN}" ]; then - [[ -z "${SOURCE}" || -z "${SOURCE_REGISTRY}" ]] && clear + if [[ "${ONLY_REGISTRY}" == "true" ]]; then + [[ -z "${SOURCE_REGISTRY}" ]] && clear + else + [[ -z "${SOURCE}" || -z "${SOURCE_REGISTRY}" ]] && clear + fi elif [ "${CLEAN_SCREEN}" == "true" ]; then clear fi @@ -1490,7 +1494,7 @@ function change_docker_registry_mirror() { touch $File_DockerConfig fi - echo -e '{\n "registry-mirrors": ["https://'"${SOURCE_REGISTRY}"'"]\n}' >$File_DockerConfig + echo -e '{\n "registry-mirrors": '"$(handleRegistryMirrorsValue ${SOURCE_REGISTRY})"'\n}' >$File_DockerConfig ## 重启服务 systemctl daemon-reload if [[ "$(systemctl is-active docker 2>/dev/null)" == "active" ]]; then @@ -1559,9 +1563,9 @@ function only_change_docker_registry_mirror() { fi fi [ -s "${File_DockerConfig}" ] || echo "{}" >$File_DockerConfig - jq '.["registry-mirrors"] = ["https://'"${SOURCE_REGISTRY}"'"]' $File_DockerConfig >$File_DockerConfig.tmp && mv $File_DockerConfig.tmp $File_DockerConfig + jq '.["registry-mirrors"] = '"$(handleRegistryMirrorsValue ${SOURCE_REGISTRY})"'' $File_DockerConfig >$File_DockerConfig.tmp && mv $File_DockerConfig.tmp $File_DockerConfig else - echo -e '{\n "registry-mirrors": ["https://'"${SOURCE_REGISTRY}"'"]\n}' >$File_DockerConfig + echo -e '{\n "registry-mirrors": '"$(handleRegistryMirrorsValue ${SOURCE_REGISTRY})"'\n}' >$File_DockerConfig fi ## 重启服务 systemctl daemon-reload @@ -1576,6 +1580,27 @@ function only_change_docker_registry_mirror() { fi } +function handleRegistryMirrorsValue() { + local content="$1" + local delimiter="," + local result="" + content="$(echo "${content}" | sed 's| ||g')" + local -a items=(${content//,/ }) + for item in "${items[@]}"; do + [[ -z "${item}" ]] && continue + if [[ -z "${result}" ]]; then + result='"https://'"${item}"'"' + else + result="${result},\"https://${item}\"" + fi + done + if [[ "${result}" ]]; then + echo "[${result}]" + else + echo "" + fi +} + ## 查看版本并验证安装结果 function check_installed_result() { if command_exists docker; then diff --git a/docs/other/index.en.md b/docs/other/index.en.md index dfb0c1a..032dedd 100644 --- a/docs/other/index.en.md +++ b/docs/other/index.en.md @@ -234,7 +234,7 @@ Command options(name/meaning/value): | Name | Meaning | Value | | :-: | :-: | :-: | | `--source` | Specify `Docker CE` mirror 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 (separate multiple entries with commas)` | | `--branch` | Specify `Docker CE` mirror repository (path) | `repo name (see docs below)` | | `--branch-version` | Specify `Docker CE` mirror repository version | `version (see docs below)` | | `--designated-version` | Specify `Docker Engine` installation version | `version (see docs below)` | @@ -258,6 +258,13 @@ Command options(name/meaning/value): bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --en --source-registry registry.example.com ``` + Can specify multiple addresses at the same time, and they must be separated by commas. + + ``` { .bash .no-copy } + bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --en \ + --source-registry "registry-1.example.com,registry-2.example.com" + ``` + - ### Only Switch Registry Mirror === "Use Script for One-Click Replacement" @@ -268,6 +275,14 @@ Command options(name/meaning/value): bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --en --only-registry ``` + Lazy one-click command (using multiple addresses) + + ``` bash + bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --en \ + --only-registry \ + --source-registry "docker.1ms.run,docker.1panel.live,docker.m.daocloud.io" + ``` + === "Manual Replacement" - Install the `jq` package diff --git a/docs/other/index.md b/docs/other/index.md index a2b9e77..6b1f71d 100644 --- a/docs/other/index.md +++ b/docs/other/index.md @@ -234,7 +234,7 @@ $ bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --help | 名称 | 含义 | 选项值 | | :-: | :-: | :-: | | `--source` | 指定 `Docker CE` 源地址(域名或IP) | `地址` | -| `--source-registry` | 指定 `Docker` 镜像仓库地址(域名或IP) | `地址` | +| `--source-registry` | 指定 `Docker` 镜像仓库地址(域名或IP) | `地址(多个用英文逗号分割)` | | `--branch` | 指定 `Docker CE` 软件源仓库(路径) | `仓库名(详见下方文档)` | | `--branch-version` | 指定 `Docker CE` 软件源仓库版本 | `版本号(详见下方文档)` | | `--designated-version` | 指定 `Docker Engine` 安装版本 | `版本号(详见下方文档)` | @@ -258,6 +258,13 @@ $ bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --help bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --source-registry registry.example.com ``` + 可以同时指定多个地址,需使用英文逗号进行分割 + + ``` { .bash .no-copy } + bash <(curl -sSL https://linuxmirrors.cn/docker.sh) \ + --source-registry "registry-1.example.com,registry-2.example.com" + ``` + - ### 仅更换镜像仓库 === "使用脚本一键替换" @@ -268,6 +275,14 @@ $ bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --help bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --only-registry ``` + 懒人一键命令(使用多个地址) + + ``` bash + bash <(curl -sSL https://linuxmirrors.cn/docker.sh) \ + --only-registry \ + --source-registry "docker.1ms.run,docker.1panel.live,docker.m.daocloud.io" + ``` + === "手动替换" - 安装 `jq` 软件包 diff --git a/docs/other/index.zh-Hant.md b/docs/other/index.zh-Hant.md index f2245b2..56dadcb 100644 --- a/docs/other/index.zh-Hant.md +++ b/docs/other/index.zh-Hant.md @@ -234,7 +234,7 @@ $ bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --zh-hant --help | 名稱 | 意義 | 選項值 | | :-: | :-: | :-: | | `--source` | 指定 `Docker CE` 軟體源位址(網域名稱或IP) | `位址` | -| `--source-registry` | 指定 `Docker` 映像倉庫位址(網域名稱或IP) | `位址` | +| `--source-registry` | 指定 `Docker` 映像倉庫位址(網域名稱或IP) | `位址(多個用英文逗號分割)` | | `--branch` | 指定 `Docker CE` 軟體源倉庫(路徑) | `倉庫名稱(詳見下方文件)` | | `--branch-version` | 指定 `Docker CE` 軟體源倉庫版本 | `版本號(詳見下方文件)` | | `--designated-version` | 指定 `Docker Engine` 安裝版本 | `版本號(詳見下方文件)` | @@ -258,6 +258,13 @@ $ bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --zh-hant --help bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --zh-hant --source-registry registry.example.com ``` + 可同時指定多個地址,需使用英文逗號分割 + + ``` { .bash .no-copy } + bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --zh-hant \ + --source-registry "registry-1.example.com,registry-2.example.com" + ``` + - ### 僅更換映像倉庫 === "使用腳本一鍵替換" @@ -268,6 +275,14 @@ $ bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --zh-hant --help bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --zh-hant --only-registry ``` + 懶人一鍵指令(使用多個位址) + + ``` bash + bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --zh-hant \ + --only-registry \ + --source-registry "docker.1ms.run,docker.1panel.live,docker.m.daocloud.io" + ``` + === "手動替換" - 安裝 `jq` 軟體包 diff --git a/docs/use/index.en.md b/docs/use/index.en.md index 59f43a4..6ef9bd9 100644 --- a/docs/use/index.en.md +++ b/docs/use/index.en.md @@ -648,8 +648,8 @@ Below are some advanced usage examples ``` bash bash <(curl -sSL https://linuxmirrors.cn/main.sh) --en \ - --codename trixie \ - --upgrade-software false + --codename trixie \ + --upgrade-software false ``` - Disable the backports repository @@ -678,8 +678,8 @@ Below are some advanced usage examples ``` bash bash <(curl -sSL https://linuxmirrors.cn/main.sh) --en \ - --codename testing \ - --upgrade-software false + --codename testing \ + --upgrade-software false ``` ``` { .bash .no-copy title="If the script can't set the codename, you can manually replace it after running" } diff --git a/docs/use/index.md b/docs/use/index.md index 45aa9d6..664255c 100644 --- a/docs/use/index.md +++ b/docs/use/index.md @@ -650,8 +650,8 @@ $ bash <(curl -sSL https://linuxmirrors.cn/main.sh) --help ``` bash bash <(curl -sSL https://linuxmirrors.cn/main.sh) \ - --codename trixie \ - --upgrade-software false + --codename trixie \ + --upgrade-software false ``` - 禁用 backports 仓库 @@ -680,8 +680,8 @@ $ bash <(curl -sSL https://linuxmirrors.cn/main.sh) --help ``` bash bash <(curl -sSL https://linuxmirrors.cn/main.sh) \ - --codename testing \ - --upgrade-software false + --codename testing \ + --upgrade-software false ``` ``` { .bash .no-copy title="若脚本无法实现指定版本代号,你也可以在执行脚本后手动替换" } diff --git a/docs/use/index.zh-Hant.md b/docs/use/index.zh-Hant.md index 6994714..3042534 100644 --- a/docs/use/index.zh-Hant.md +++ b/docs/use/index.zh-Hant.md @@ -650,8 +650,8 @@ $ bash <(curl -sSL https://linuxmirrors.cn/main.sh) --zh-hant --help ``` bash bash <(curl -sSL https://linuxmirrors.cn/main.sh) --zh-hant \ - --codename trixie \ - --upgrade-software false + --codename trixie \ + --upgrade-software false ``` - 停用 backports 倉庫 @@ -680,8 +680,8 @@ $ bash <(curl -sSL https://linuxmirrors.cn/main.sh) --zh-hant --help ``` bash bash <(curl -sSL https://linuxmirrors.cn/main.sh) --zh-hant \ - --codename testing \ - --upgrade-software false + --codename testing \ + --upgrade-software false ``` ``` { .bash .no-copy title="如果腳本無法實現指定版本代號,你也可以在執行腳本後手動替換" }