6 changed files with 213 additions and 0 deletions
@ -1,2 +1,20 @@ |
|||
# install_docker_offline |
|||
|
|||
# 操作手册 |
|||
|
|||
### 例如: |
|||
1. docker-20.10.10.tgz 改成 docker.tgz |
|||
2. docker-compose-1.27.4 改成 docker-compose |
|||
3. 20.10.10 + 1.27.4 属于稳定版 |
|||
|
|||
~~~shell |
|||
|
|||
mv docker-20.10.10.tgz docker.tgz |
|||
mv docker-compose-1.27.4 docker-compose |
|||
./install_docker_offline.sh |
|||
|
|||
~~~ |
|||
|
|||
### 注:会遇到 containerd-shim-runc-v2 问题,最好用ubuntu用命令补充安装 |
|||
1. apt update |
|||
2. apt install containerd |
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,195 @@ |
|||
#!/bin/bash |
|||
set -e |
|||
|
|||
DOCKER_TGZ="docker.tgz" |
|||
COMPOSE_BIN="docker-compose" |
|||
INSTALL_DIR="/usr/bin" |
|||
SYSTEMD_DIR="/etc/systemd/system" |
|||
DAEMON_JSON="/etc/docker/daemon.json" |
|||
|
|||
# =============================== |
|||
# 多个镜像加速器 (按需修改) |
|||
# =============================== |
|||
REGISTRY_MIRRORS=( |
|||
"https://docker-cf.registry.cyou" |
|||
"https://docker.registry.cyou" |
|||
"https://hub.uuuadc.top" |
|||
"https://docker.anyhub.us.kg" |
|||
"https://dockerhub.jobcher.com" |
|||
"https://dockerhub.icu" |
|||
"https://docker.ckyl.me" |
|||
"https://docker.awsl9527.cn" |
|||
"https://docker.rainbond.cc" |
|||
"https://docker.1panel.live" |
|||
"https://docker.1ms.run" |
|||
"https://hub.rat.dev" |
|||
"https://docker.jsdelivr.fyi" |
|||
"https://dockerpull.com" |
|||
"https://dockerproxy.cn" |
|||
"https://docker.m.daocloud.io" |
|||
"https://hub.gog.email" |
|||
"https://7dg5h62m.mirror.aliyuncs.com" |
|||
"https://registry.cn-hangzhou.aliyuncs.com" |
|||
"https://dockerhub.azk8s.cn", |
|||
"https://hub-mirror.c.163.com" |
|||
"https://mirrors.ustc.edu.cn" |
|||
"https://hub.c.163.com" |
|||
) |
|||
|
|||
echo "=== Docker Offline Installer (Full Version) ===" |
|||
|
|||
############################################### |
|||
# 函数:卸载旧 Docker |
|||
############################################### |
|||
uninstall_old_docker() { |
|||
echo "------ 开始卸载旧 Docker ------" |
|||
|
|||
# systemd 停止服务 |
|||
systemctl stop docker >/dev/null 2>&1 || true |
|||
systemctl stop docker.socket >/dev/null 2>&1 || true |
|||
|
|||
# 删除二进制 |
|||
rm -f /usr/bin/docker |
|||
rm -f /usr/bin/dockerd |
|||
rm -f /usr/bin/containerd |
|||
rm -f /usr/bin/runc |
|||
rm -f /usr/local/bin/docker-compose |
|||
|
|||
# 针对 rpm 系统(CentOS / RHEL) |
|||
if command -v rpm >/dev/null 2>&1; then |
|||
rpm -qa | grep -E "docker|containerd" | xargs -r rpm -e --nodeps |
|||
fi |
|||
|
|||
# 针对 deb 系统(Ubuntu / Debian) |
|||
if command -v dpkg >/dev/null 2>&1; then |
|||
apt-get remove -y docker docker-engine docker.io containerd runc >/dev/null 2>&1 || true |
|||
fi |
|||
|
|||
echo "------ 卸载旧 Docker 完成 ------" |
|||
} |
|||
|
|||
############################################### |
|||
# 执行卸载 |
|||
############################################### |
|||
uninstall_old_docker |
|||
|
|||
|
|||
############################################### |
|||
# 安装 Docker |
|||
############################################### |
|||
echo "1) 安装 Docker 二进制程序..." |
|||
if [ ! -f "$DOCKER_TGZ" ]; then |
|||
echo "[ERROR] 未找到 docker.tgz,请放在当前目录" |
|||
exit 1 |
|||
fi |
|||
|
|||
tar -xf $DOCKER_TGZ |
|||
cd docker |
|||
|
|||
cp docker* $INSTALL_DIR/ |
|||
[ -f "containerd" ] && cp containerd $INSTALL_DIR/ |
|||
[ -f "runc" ] && cp runc $INSTALL_DIR/ |
|||
|
|||
cd .. |
|||
|
|||
|
|||
############################################### |
|||
# 创建 systemd 服务 |
|||
############################################### |
|||
echo "2) 创建 systemd 服务文件..." |
|||
|
|||
cat > $SYSTEMD_DIR/docker.service <<EOF |
|||
[Unit] |
|||
Description=Docker Application Container Engine |
|||
Documentation=https://docs.docker.com |
|||
After=network.target |
|||
|
|||
[Service] |
|||
Type=notify |
|||
ExecStart=/usr/bin/dockerd |
|||
ExecReload=/bin/kill -s HUP \\$MAINPID |
|||
LimitNOFILE=infinity |
|||
LimitNPROC=infinity |
|||
LimitCORE=infinity |
|||
TimeoutStartSec=0 |
|||
Restart=always |
|||
|
|||
[Install] |
|||
WantedBy=multi-user.target |
|||
EOF |
|||
|
|||
systemctl daemon-reload |
|||
|
|||
|
|||
############################################### |
|||
# 配置 daemon.json(支持多个 registry mirrors) |
|||
############################################### |
|||
echo "3) 配置 daemon.json (支持多个 registry mirrors)..." |
|||
|
|||
mkdir -p /etc/docker |
|||
|
|||
# 生成 JSON 数组字符串 |
|||
MIRROR_JSON="" |
|||
for m in "${REGISTRY_MIRRORS[@]}"; do |
|||
if [ -z "$MIRROR_JSON" ]; then |
|||
MIRROR_JSON="\"$m\"" |
|||
else |
|||
MIRROR_JSON="$MIRROR_JSON, \"$m\"" |
|||
fi |
|||
done |
|||
|
|||
if [ ! -f "$DAEMON_JSON" ]; then |
|||
echo "[INFO] daemon.json 不存在,正在创建..." |
|||
cat > $DAEMON_JSON <<EOF |
|||
{ |
|||
"registry-mirrors": [ $MIRROR_JSON ] |
|||
} |
|||
EOF |
|||
else |
|||
echo "[INFO] daemon.json 已存在,正在合并 registry-mirrors ..." |
|||
if grep -q "registry-mirrors" "$DAEMON_JSON"; then |
|||
sed -i "s#\"registry-mirrors\": \[[^]]*\]#\"registry-mirrors\": [ $MIRROR_JSON ]#" "$DAEMON_JSON" |
|||
else |
|||
sed -i "s#^{#{\n \"registry-mirrors\": [ $MIRROR_JSON ],#" "$DAEMON_JSON" |
|||
fi |
|||
fi |
|||
|
|||
echo "daemon.json 当前内容:" |
|||
cat $DAEMON_JSON |
|||
|
|||
|
|||
############################################### |
|||
# 启动 Docker |
|||
############################################### |
|||
echo "4) 启动 Docker 服务..." |
|||
systemctl enable docker |
|||
systemctl restart docker |
|||
|
|||
|
|||
############################################### |
|||
# 安装 docker-compose |
|||
############################################### |
|||
echo "5) 安装 docker-compose..." |
|||
|
|||
if [ ! -f "$COMPOSE_BIN" ]; then |
|||
echo "[ERROR] 未找到 docker-compose 文件" |
|||
exit 1 |
|||
fi |
|||
|
|||
cp $COMPOSE_BIN /usr/local/bin/docker-compose |
|||
chmod +x /usr/local/bin/docker-compose |
|||
|
|||
|
|||
############################################### |
|||
# 验证安装 |
|||
############################################### |
|||
echo "6) 验证安装..." |
|||
|
|||
echo -n "Docker 版本: " |
|||
docker --version || echo "Docker 未正确安装" |
|||
|
|||
echo -n "Compose 版本: " |
|||
docker-compose --version || echo "Compose 未正确安装" |
|||
|
|||
echo "=== Docker 离线安装(含自动卸载旧版本 + 多镜像加速)完成 ===" |
|||
|
|||
Loading…
Reference in new issue