#!/bin/bash # #*************************************************************************** # Author: liwanggui # Email: liwanggui@163.com # Date: 2023-08-10 # FileName: install-docker.sh # Description: 在线安装 docker & docker-compose # Copyright (C): 2023 All rights reserved #*************************************************************************** # # 安装最新版本 docker: # $ curl -s https://dl.zrshuiwu.com/scripts/install-docker.sh | bash # 安装指定版本的 docker 和 docker-compose: # $ curl -s https://dl.zrshuiwu.com/scripts/install-docker.sh | DOCKER_VERSION=24.0.6 DOCKER_COMPOSE_VERSION=v2.23.0 bash # # 平台架构 ARCH=$(arch || uname -m) # 默认安装最新版本 DOCKER_VERSION=${DOCKER_VERSION:-latest} DOCKER_COMPOSE_VERSION=${DOCKER_COMPOSE_VERSION:-latest} # github 加速代理 GITHUB_PROXY=${GITHUB_PROXY:-https://gh.wglee.org/} # docker DOCKER_RELEASE_API="https://api.github.com/repos/moby/moby/releases/latest" DOCKER_DOWNLOAD_URL=https://download.docker.com/linux/static/stable/${ARCH} # docker compose DOCKER_COMPOSE_RELEASE_API="https://api.github.com/repos/docker/compose/releases/latest" DOCKER_COMPOSE_DOWNLOAD_URL=${GITHUB_PROXY}https://github.com/docker/compose/releases/download # 自动实例脚本 (bash) DOCKER_COMPLETION_SCRIPT="${GITHUB_PROXY}https://gist.githubusercontent.com/liwanggui/a7aacd89602bd6ef625292ba2d2ef10f/raw/3e6c5772d30938d198ae9466df067ebc1ebb52d9/docker" # docker 安装路径 INSTALL_DIR=/usr/bin # docker-compose 安装路径 DOCKER_PLUGIN_DIR=/usr/libexec/docker/cli-plugins # 临时目录 TEMPDIR=$(mktemp -d) error () { echo -e "\e[0;31m[ERROR] - $(date +'%F %T') -\e[0m $@" } info () { echo -e "\e[0;34m[INFO] - $(date +'%F %T') -\e[0m $@" } _wget() { local url="$1" local save_name="$2" local opts if [[ -n "${save_name}" ]]; then opts="-O ${save_name}" fi info "下载 ${url}" if ! wget -q --show-progress --tries=3 --timeout=30 "${url}" ${opts}; then error "下载失败,请检查后重试!" /bin/rm -rf ${TEMPDIR} exit 1 fi } get_latest_version() { local api_url="$1" curl -s ${api_url} | grep tag_name | cut -f4 -d "\"" } install_docker() { local docker_ce_url local docker_rootless_extras if [[ "$DOCKER_VERSION" = "latest" ]]; then # DOCKER_VERSION=$(curl -s ${DOCKER_DOWNLOAD_URL%/}/ | grep -Eo 'docker-[0-9\.]+tgz' | sort | uniq | tail -n1 | awk -F'docker-|.tgz' '{print $2}') DOCKER_VERSION=$(get_latest_version ${DOCKER_RELEASE_API}) # 去除版本字符 "v" DOCKER_VERSION=${DOCKER_VERSION#v} fi docker_ce_url="${DOCKER_DOWNLOAD_URL%/}/docker-${DOCKER_VERSION}.tgz" docker_rootless_extras="${DOCKER_DOWNLOAD_URL%/}/docker-rootless-extras-${DOCKER_VERSION}.tgz" cd ${TEMPDIR} _wget ${docker_ce_url} _wget ${docker_rootless_extras} info "安装 $(basename ${docker_ce_url}) 至 ${INSTALL_DIR}" tar xzvf $(basename ${docker_ce_url}) --strip=1 -C ${INSTALL_DIR}/ info "安装 $(basename ${docker_rootless_extras}) 至 ${INSTALL_DIR}" tar xzvf $(basename ${docker_rootless_extras}) --strip=1 -C ${INSTALL_DIR}/ [ -d /etc/docker ] || mkdir -vp /etc/docker info "创建配置文件: /etc/docker/daemon.json" cat >/etc/docker/daemon.json</etc/sysconfig/docker</usr/lib/systemd/system/docker.service<