当前位置: 首页 > news >正文

shell脚本一键安装docker+docker-compose,支持x86_64、arm64双架构

目录

脚本内容

运行效果

安装包和脚本

脚本内容

[root@test1 docker]# cat install.sh 
#!/bin/bash
set -e
export path=`pwd`
export docker_data="/data/docker_data"

function check_arch() {
  if [ -f /etc/redhat-release ]; then
    OS="RedHat"
  elif [ -f /etc/kylin-release ]; then
    OS="kylin"
  else
    echo "Unknow linux distribution."
  fi
  OS_ARCH=$(uname -a)
  if [[ "$OS_ARCH" =~ "x86" ]]
  then
    ARCH="x86"
    echo -e  "The operating system is $OS,the architecture is X86."
  elif [[ "$OS_ARCH" =~ "aarch" ]]
  then
    ARCH="arm64"
    echo -e  "The operating system is $OS,the architecture is Arm."
  fi
}

function check_docker() {
  echo "Make sure docker is installed and running."
  if ! [ -x "$(command -v docker)" ]; then
    echo "docker not find."
    create_docker_group_and_user
    install_docker
  else
    echo "docker exists."
  fi
  if ! systemctl is-active --quiet docker; then
    echo "docker is not running."
    create_docker_group_and_user
    install_docker
  else
    echo "docker is running."
  fi
}

function check_docker_compose() {
  echo "Make sure docker-compose is installed."
  if ! [ -x "$(command -v docker-compose)" ]; then
    echo "docker-compose not find."
    install_docker_compose   
  else
    echo "docker-compose exist."
  fi
}

function create_docker_group_and_user() {
  if ! getent group docker >/dev/null 2>&1; then
    groupadd docker
    echo "docker group created successfully."
  else
    echo "docker group already exists."
  fi
  if ! id -u docker >/dev/null 2>&1; then
    useradd -m -s /bin/bash -g docker docker
    echo "docker user has been created and added to docker group."
  else
    echo "docker user already exists."
  fi
}

function install_docker() {
  echo "Installing docker."
  if [[ "$ARCH" == "x86" ]]
  then
    export DOCKER_OFFLINE_PACKAGE=$path/packages/docker/x86/docker-27.2.0.tgz
  else
    export DOCKER_OFFLINE_PACKAGE=$path/packages/docker/arm64/docker-27.2.0.tgz
  fi
  tar axvf $DOCKER_OFFLINE_PACKAGE -C /usr/bin/ --strip-components=1
  cp -v -f $path/packages/docker/docker.service /usr/lib/systemd/system/
  test -d /etc/docker || mkdir -p /etc/docker
  envsubst '$docker_data' < $path/packages/docker/daemon.json > /etc/docker/daemon.json
  systemctl stop firewalld
  systemctl disable firewalld
  systemctl daemon-reload
  systemctl enable docker.service --now
  systemctl restart docker || :
  maxSecond=60
  for i in $(seq 1 $maxSecond); do
    if systemctl is-active --quiet docker; then
      break
    fi
    sleep 1
  done
  if ((i == maxSecond)); then
    echo "Failed to start the docker server, please check the docker start log."
    exit 1
  fi
  echo "docker has started successfully and the installation is complete."
}

function install_docker_compose {
  echo "Installing docker-compose"
  if [[ "$ARCH" == "x86" ]]
  then
    export DOCKER_COMPOSE_OFFLINE_PACKAGE=$path/packages/docker-compose/x86/docker-compose-linux-x86_64
    cp -v -f $DOCKER_COMPOSE_OFFLINE_PACKAGE /usr/local/bin/docker-compose
  else
    export DOCKER_COMPOSE_OFFLINE_PACKAGE=$path/packages/docker-compose/arm64/docker-compose-linux-aarch64
    cp -v -f $DOCKER_COMPOSE_OFFLINE_PACKAGE /usr/local/bin/docker-compose
  fi
}

check_arch
check_docker
check_docker_compose

运行效果

[root@test1 docker]# bash install.sh 
The operating system is RedHat,the architecture is X86.
Make sure docker is installed and running.
docker not find.
docker group created successfully.
docker user has been created and added to docker group.
Installing docker.
docker/docker-init
docker/ctr
docker/containerd
docker/containerd-shim-runc-v2
docker/dockerd
docker/docker-proxy
docker/docker
docker/runc
‘/root/docker/packages/docker/docker.service’ -> ‘/usr/lib/systemd/system/docker.service’
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
docker has started successfully and the installation is complete.
docker is running.
Make sure docker-compose is installed.
docker-compose not find.
Installing docker-compose
‘/root/docker/packages/docker-compose/x86/docker-compose-linux-x86_64’ -> ‘/usr/local/bin/docker-compose’

安装包和脚本

通过网盘分享的文件:docker-27.2.0.tgz
链接: https://pan.baidu.com/s/1rvY8QzKdPBJdipY0bP2eKg?pwd=wqcr 提取码: wqcr

相关文章:

  • 桑福德·韦尔策划美国捷运公司收购南美银行案例分析
  • 数组子序列比较的SIMD优化
  • 字典树与01trie
  • 数值分析作业插值法2
  • CD18.【C++ Dev】类和对象(9)(声明和定义分离的写法以及代码复用)
  • php webshell免杀
  • Hive问题记录(1)
  • SingleMod
  • inline 配置全局参数变量
  • 深入解析 Spring Framework 5.1.8.RELEASE 的源码目录结构
  • 驱动编写-DS18B20温度传感器
  • 远场分量(平面波角谱)与倏逝波
  • 搜索旋转排序数组
  • 初见MyBatis
  • 区间端点(java)(贪心问题————区间问题)
  • 游戏中的碰撞检测算法
  • 吐血整理:Air8201如何使用LuatOS进行电源管理功能!
  • 线程控制与线程库
  • ideaIU-2023.2.5.exe install (IntelliJ_IDEA_IU_2023.2.5)
  • 解决海豚调度器跑出数据但显示状态失败(在CDH6.3.2跑离线数仓任务)
  • 制作网站代码/seo会被取代吗
  • 外贸电商做俄罗斯市场网站/竞价推广工作内容
  • 天津企朋做网站的公司/网站制作优化
  • 网站建设及服务合同/重大新闻事件2023
  • 网站空间后台/seo优化点击软件
  • 幼儿园校园网站建设情况/拓客app下载